2011-03-22 80 views
2

我回到C++,需要一点帮助。我知道什么是常量指针,但我可以找到,如何将它分配在构造函数中正确这是令人沮丧的;)const指针作为类字段赋值

因此,例如:

public: 
    TransferManager::TransferManager(Account * source, double amount) 
    { 
    account = source; // that doesn't work ;) 
    } 

private: 
    Account * const account; 

1>proj1.cpp(63): error C2166: l-value specifies const object

该错误味精不明确为了我。

我做了一些研究,但我确实发现了bettwen常量指针差异,指针为const var和常量指针为const变种...

回答

10

使用初始化列表来初始化常量成员:

TransferManager::TransferManager(Account * source, double amount) : account(source) { 
} 

错误消息是说你试图赋值给常量 - 这是不允许的。你必须初始化这样的成员变量,不分配给它们。

+0

它是“initializ/ation/list”,initializ/er/list是C++ 0x的一个新构造,用于启用'std :: vector v = {1,2,3,4,5}'。 – filmor 2011-03-22 10:48:48

+0

@filmor:实际上它是C++ 03标准中的mem-initializer-list。 – Erik 2011-03-22 10:52:39

+0

所以也在这里C++'const'与Java'final'不同......;)非常感谢! – dantuch 2011-03-22 10:54:24