我正在尝试创建一个简单的文本编辑器。我需要使用列出的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) {}
};
答案 0 :(得分:3)
尝试重命名
字符串插入
类似
string strInsert
这是因为你不应该为变量和函数使用相同的名称!