在主要方面:

void HandleAction(const RandomWriter & rw, string choice)
{
   if(choice == "P")
   {
     string fileInput;
     cout << "Change input file: " << endl;
     cin >> fileInput;
     rw.SetFilename(fileInput);
   }
}


在RandomWriter类中:

void RandomWriter::SetFilename(string filename)
{
 string text = GetFullFile(filename);
 if (text != "")
{
  fullText = text;
  this->filename = filename;
}


/

当我尝试将fileInput作为参数传递给SetFileName时,为什么会出现此错误?

在此先感谢大家!

||=== error: passing 'const RandomWriter' as 'this' argument of 'void RandomWriter::SetFilename(std::string)' discards qualifiers [-fpermissive]|

最佳答案

HandleAction函数中,您说rw是对常量RandomWriter对象的引用。然后,您尝试在rw对象上调用成员函数,该成员函数试图修改常量对象。这当然是不允许的,您不能修改常量对象。

因此,简单的解决方案是删除参数规范的const部分:

void HandleAction(RandomWriter & rw, string choice) { ... }
//                ^^^^^^^^^^^^^^^^^
//         Note: No longer constant




在相关说明中,您可能应该使用对字符串的常量对象的引用,而不需要一直复制它们。

07-28 08:09