我只有一个非常基本的类,它提供了返回获胜团队的功能。
这是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.
答案 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
{}
};
但我不明白,为什么你有teamName2
,score2
成员作为团队成员。如果有10支队伍怎么办?只需拥有每个团队的实例,并将其与其他团队实例进行比较。