如何修复类中的类型限定符错误?

时间:2013-07-06 19:51:13

标签: c++

这是我的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;
}

1 个答案:

答案 0 :(得分:1)

str1是对 const String的引用。

简单来说,编译器希望确保str1.print()不会修改str1

因此,它会查找const方法的print重载,该方法不存在。

制作print方法const

class String
{
   ...

   void print() const;
                ^^^^^^
   ...
};


void String::print() const
{                    ^^^^^
...
}