我有这堂课:
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 :(得分:8)
在const
函数中,所有成员的行为就像它们是const一样,在您的情况下,成员IBAN
等同于const char IBAN[14]
。你不能得到一个非const char*
来引用一个const数组,从而引发错误。你可能想这样做:
const char* BankAccount::getIban() const {
return IBAN;
}
答案 1 :(得分:0)
你必须在标题
中的函数声明中包含const答案 2 :(得分:-1)
如果在定义方法时声明一个方法const,编译器WONT让你可能通过将指针传递给const不在const之外的东西来毁掉那个const。
错误就是这样。你需要返回一个const char *,这样编译器知道你何时使用该函数,结果类型是一个const char *< - 你可以看但不能触摸,所以IBAN值保持不变。
如果你让const方法返回一个const char *(返回IBAN)它会没问题,因为当你使用那个方法时,C ++不会让你改变调用它的结果指向的内容。