将字符串变量作为参数发送以打开文件

时间:2016-05-11 03:07:12

标签: c++ function file pointers

主要:

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]|

2 个答案:

答案 0 :(得分:1)

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

所以简单的解决方案是删除参数规范的const部分:

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

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

答案 1 :(得分:0)

您的RandomWriter方法中rw参数const已宣布为HandleAction(),因此不可变且您的通话无法更改到SetFilename()