void function call not working c ++

时间:2013-08-14 19:47:16

标签: c++

我正在尝试创建一个简单的文本编辑器。我需要使用列出的void函数。我不能改变参数。我可以调用第一个void函数open(file)但不能调用insert命令。我通过使用重载运算符打印结构来测试open函数。

 int main() 
 {
     editor_file file;
     string command;
     string insert;

     cout << "Welcome to TextEditor. Please enter a filename: ";

     open(file);

     cout << file;
     cout << '>';
     cin >> command;


     if(command == insert)
     {   
         insert(file);  // error: no match for call to '(std::string) (editor_file&)'
     }

     cout << file;

    return 0;
}

单独文件中的void函数

void open(editor_file &file)
{

    string line;
    string filename; 
    ifstream fin(filename.c_str());
    do 
    {
        cin >> filename;       
        fin.open(filename.c_str());
        file.name = filename; 

        if(fin.fail())
        {
            cout << "Invalid File. ";
            cout << "Please enter another file name: ";
        }
    }while (fin.fail());

    getline(fin, line);

    while(fin)
    {
        file.data += line + '\n';
        getline(fin, line);
    }

}


void insert(editor_file &file)
{

    char character;
    cin >> character;
    string info = file.data;

    info.insert(file.cursor, character);
}

头文件中的struct

struct editor_file
{
    std::string name;

    std::string data;

    int cursor;

    bool is_open;

    bool is_saved;

    editor_file():cursor(0),is_open(false), is_saved(true) {}
};

1 个答案:

答案 0 :(得分:3)

尝试重命名

  

字符串插入

类似

  

string strInsert

这是因为你不应该为变量和函数使用相同的名称!