2014-02-24 125 views
1

我的UML表示,getter方法的getName是字符串類型&和const (的getName():常量字符串&)的 所以在我的.h文件中我寫字符串&引用返回類型C++?

public: 
std::string & getName() const; 
private: 
std::string name; 

,並在我的cpp文件

string & Class::getName() const 
{ 
return name; 
} 

當我嘗試編譯我.cpp文件我得到一個錯誤說:從類型的表達std::string& {aka std::basic_string<char>&}類型的引用無效初始化const string {aka const std::basic_string<char>}

如果我嘗試將名稱的返回值更改爲&名稱,我仍然收到錯誤消息。我不知道如何解決它。請幫助。

回答

7

您需要返回const參考:

const std::string& getName() const; 

否則即表示您授權通過const方法將一個對象的數據非const訪問。

3

當您的成員函數是const時,它只有const訪問成員變量。

因此,您不能將name綁定到該函數內的非const引用。

您的退貨類型必須是const std::string&