错误:" "之前需要预期的主表达式

Error: expected primary expression required before " "

本文关键字:表达式 错误      更新时间:2023-10-16

在过去的几个小时里,我一直在看这段代码,似乎无法理解错误可能是什么。我已经创建了成员函数,我确信它们在main中被正确调用了。在每个变量被用作main中调用的类函数的参数之前,错误消息是" error: expected primary expression Before 'variable'"。

class Name_pairs
{    
    public:
    Name_pairs();
    void read_names(string nameOfPerson, vector <string> names);
    void read_ages(vector <double> ages, double ageOfPerson, vector <string>& names);
    void print();
 private:
    string nameOfPerson;
    double ageOfPerson;
    vector <string> names;
    vector <double> ages;
};`
Name_pairs::Name_pairs()
{
}
Name_pairs::read_names(nameOfPerson, names)
{
while(true)
{
    cout << "Please enter a name: (enter q to end) " << endl;
    cin >> nameOfPerson;
    if(nameOfPerson == q)
    {
        names.push_back(nameOfPerson);
        break;
    }else{
        names.push_back(nameOfPerson);
    }
 }
}
Name_pairs::read_ages(ages,ageOfPerson, names)
{
    int z =0;
    while(true)
    {
            cout << "Please enter " << names[a] << "'s age: "
            cin >> ageOfPerson;
            ages.push_back(ageOfPerson);
            z++;
            if(ages.size()== names.size() )
            {
                break;
            }
    }
}

And then where the problem occurs is in the main function.
int main()
{
Name_pairs identifier;
identifier.read_names(string nameOfPerson, vector <string> names);
identifier.read_ages(vector <double> ages, double ageOfPerson, vector <string> names);

return 0;
}

如有任何帮助,不胜感激

您的代码中有许多错误。最明显的是在Name_pairs::read_names的定义中缺少返回类型和参数类型:

void Name_pairs::read_names(string nameOfPerson, vector <string> names) {
  // ... 
}

和参数应该通过引用传递,@Neil Kirk注意到了这一点。

read_ages也一样。

你也不应该在调用这些方法时指定类型:

string nameOfPerson;
vector <string> names;
identifier.read_names(nameOfPerson, names);