這源於Herb Sutter的gotw3(http://www.gotw.ca/gotw/003.htm)。將班級轉換爲字符串
下面的類和FindAddr
功能...
using std::string;
using std::list;
class Employee
{
public:
Employee(const string& n, const string& a) : name(n), addr(a) { }
string name;
string addr;
};
string FindAddr(const list<Employee>& l, const string& name)
{
string addr;
list<Employee>::const_iterator i = find(l.begin(), l.end(), name);
if (i != l.end()) {
addr = (*i).addr;
}
return addr;
}
我得到一個編譯錯誤,因爲Employee類沒有轉換爲字符串。我可以看到,這種轉換並不一定是明智的,但對於練習的目的,我添加了一個天真的轉換:
string::string(const Employee& e)
{
return e.name;
}
這給了我一個錯誤:
gotw3.cc:17:9: error: C++ requires a type specifier for all declarations
string::string(const Employee& e)
~~~~~~^
我在做什麼錯誤?
如果您試圖超載鑄件,此鏈接可能會有所幫助:http://www.learncpp.com/cpp-tutorial/910-overloading-typecasts/ – RonaldBarzell
gotw3.cc - 關於Sutter的一些內容? – triclosan