gpt4 book ai didi

c++ - 如何在C++中修复 “No viable overloaded ' =' ”

转载 作者:行者123 更新时间:2023-12-02 10:39:16 34 4
gpt4 key购买 nike

此功能的目的是将.txt文件的各行放入不大于20的数组中。但是,如果不将循环中的每一行分配给该数组,我不知道如何进行处理。

int read_file(string file_name, person map[20], int 
line_limit)
{
int line_count = 0;
string x;
person specific;

顺便说一句,person类具有2个名为first_name和last_name的字符串和1个名为age的int。 StackOverflow不允许我发布整个程序。
    fstream input_file;



input_file.open(file_name, ios::in);
if (input_file.is_open())
{
cout << "WORKING" << endl;
//Loop through .txt file
while (!input_file.eof() && line_count <
line_limit)
{
if (input_file.good())
{
input_file >> x;
map[line_count] = x;

ABOVE行产生“没有可行的过载'='”错误。
                line_count++;
}

}
}
else
cout << "Not Working" << endl;
return 1;

return 0;
}

任何提示也将很棒!

这是我正在遍历的.txt文件。我想在遍历.txt文件时分配每个冷杉的名字,姓氏和年龄。我想将其分配给字符串x,然后将当时x的内容放入类型为person的数组,该数组采用参数字符串last_name,字符串first_name和int age。

Ann Christensen  70
Carlos Morales 68
David Bowman 45
Frank Bowman 37
John Bowman 30
Kathleen Gueller 34
Mark Bowman 42
Mark Bowman 13
Richard Bowman 47
Susan Cox 36
class person
{



private:
string first_name;
string last_name;
int age;

//Person Constructor - Empty
public:
person()
{
first_name = "";
last_name = "";
age = 0;

//void get(istream &);
//void put(ostream &);
//bool operator = ();
}

最佳答案

您正在尝试将字符串分配到应该包含person对象的位置。这将尝试执行1,或者如果执行失败,则继续执行2。

  • 使用类person定义的转换将字符串转换为person,类似于operator string()
  • 使用person方法将字符串分配给operator=(string)。这必须在person类中定义。

  • 因为我认为您要尝试的另一种选择是分配给特定成员,所以定义了setter方法。通常,如果您要为 set_first_name(string)定义 setter ,则它看起来像 first_name,并将 first_name分配给接受的参数。基本上,您只需要某种方法即可在类外设置 first_name

    如果将一个字符串分配给另一个字符串,则不会出现 operator=错误。这仅在用户定义的类中发生。

    关于c++ - 如何在C++中修复 “No viable overloaded ' =' ”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52358205/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com