这是我的main.cpp代码。输入是3个字符串,输出打印传递给它的3个String对象的值和长度
void Display(const String &str1, const String &str2, const String &str3)
{
cout << "str1 holds \"";
str1.print(); // the error is here about the str1
cout.flush();
cout << "\" (length = " << str1.length() << ")" << endl;
cout << "str2 holds \"";
str2.print();
cout.flush();
cout << "\" (length = " << str2.length() << ")" << endl;
cout << "str3 holds \"";
str3.print();
cout.flush();
cout << "\" (length = " << str3.length() << ")" << endl;
}
这是错误:
错误C2662:'String :: print':无法将'this'指针从'const String'转换为'String&amp;'
这是在我的实现文件文件中:我在这里做错了吗?
void String::print()
{
cout << m_pName << ": ";
cout << (int)m_str1 << ", ";
cout << (int)m_str2 << ", ";
cout << (int)m_str3 << endl;
}
答案 0 :(得分:1)
str1
是对 const
String
的引用。
简单来说,编译器希望确保str1.print()
不会修改str1
。
因此,它会查找const
方法的print
重载,该方法不存在。
制作print
方法const
:
class String
{
...
void print() const;
^^^^^^
...
};
void String::print() const
{ ^^^^^
...
}