没有重载函数的实例匹配参数列表C ++

时间:2011-10-18 01:17:57

标签: c++ visual-studio-2010

我只有一个非常基本的类,它提供了返回获胜团队的功能。

这是team.cpp

class teams
{
string teamName;
string teamName2;
int score;
int score2;

public:
teams ();
void set_team1();
void set_team2();
string get_score()
{
    if (score > score2)
    {
        return teamName;
    }
    else
    {
        return teamName2;
    }
}

private:
void teams::set_team1(string teamName, int score)
{
    this->teamName=teamName;
    this->score=score;
}
void teams::set_team2(string teamName2, int score2)
{
    this->teamName2=teamName2;
    this->score2=score2;
}
};    

这里是我在main方法中得到错误的行。我正在尝试创建一个团队对象。

    firstTeam.set_team1(teamName, score);
    firstTeam.set_team2(teamName2, score2);

Visual Studio出现并说“错误:没有重载函数的实例”team :: set_team1“匹配参数列表”。

我错过了什么?

这是我得到的确切错误:

1>c:\users\lab8.cpp(31): error C2664: 'void teams::set_team1(std::string,int)' : cannot     convert parameter 1 from 'std::vector<_Ty>' to 'std::string'
1>          with
1>          [
1>              _Ty=std::string
1>          ]
1>          No user-defined-conversion operator available that can perform this     conversion, or the operator cannot be called
1>c:\users\lab8.cpp(32): error C2664: 'void teams::set_team2(std::string,int)' : cannot convert parameter 1 from 'std::vector<_Ty>' to 'std::string'
1>          with
1>          [
1>              _Ty=std::string
1>          ]
1>          No user-defined-conversion operator available that can perform this     conversion, or the operator cannot be called
1>  Generating Code...
1>
1>Build FAILED.

1 个答案:

答案 0 :(得分:1)

  

错误C2664:'void teams :: set_team1(std :: string,int)':无法从'std :: vector&lt; _Ty&gt;'转换参数1到'std :: string'

从错误消息中可以清楚地看出,第一个参数的类型不是std::string。它实际上是std::vector。所以,

 firstTeam.set_team1(teamName, score);  // Check what is the type of teamName

如果您可以看到teamName实际上是std::string,请检查您是否正在编译正确的文件。保存文件并重试,因为您发布的代码和错误消息没有关系。


如果您的类重载了构造函数,编译器不提供默认构造函数(不带参数的构造函数)。

class teams
{
    string teamName;
    string teamName2;
    int score;
    int score2;

    // ...

    public:
       teams( string t, int s ) : teamName(x), score(s)
                               // Initializer list
       {}
};

但我不明白,为什么你有teamName2score2成员作为团队成员。如果有10支队伍怎么办?只需拥有每个团队的实例,并将其与其他团队实例进行比较。