2011-03-22 81 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