2013-10-08 43 views
-1

我有這個類:不能使功能常量

class BankAccount{ 
    private: 
     char* ownerName; 
     char IBAN[14]; 
     double balance; 
} 

而且我有這樣的功能:

char* BankAccount::getIban(){ 
    return this->IBAN; 
} 

那一個是有效的,但我不知道爲什麼我不能定義getIban()像這樣的,因爲我想確保IBAN不能改變:

char* BankAccount::getIban()const{ 
    return this->IBAN; 
} 

它說return value does not match the function type.

+0

你應該使用'std :: string'作爲名字和IBAN –

回答

8

裏面一個const函數的所有成員的行爲就好像他們是常量,你的情況成員IBAN相當於const char IBAN[14]。你不能得到一個非const char*來引用一個常量數組,因此也是錯誤。你可能想要做的:

const char* BankAccount::getIban() const { 
    return IBAN; 
} 
0

你必須包括在函數聲明常量在頭

-1

如果你定義它,當一個方法聲明常量編譯器不會讓你有可能通過傳遞指針const的東西之外,他們是哪裏的不是常量毀掉的是常量性。

錯誤在於。你需要返回一個const char *,這樣編譯器知道你使用該函數的結果類型是一個常量字符* < - 你可以看看但不能觸摸,所以IBAN值保持爲常量。

如果你使const方法返回一個const char *(返回IBAN),它會沒事的,因爲當你使用該方法時C++不會讓你改變調用它的結果指向什麼。