我在testtournamentmember.cpp中有以下代码部分
TournamentMember player1("Ian", "Smith", "1998-12-03");
TournamentMember player2 = TournamentMember(player1);
player1.setFirstName("Andrew");
TournamentMember.h类定义为:
private:
char firstName[31];
char lastName[31];
char dateBirth[11];
static std::string location;
//static int numberMembers;
//static int difficulty;
public:
TournamentMember();
TournamentMember(char[], char[], char[]);
TournamentMember(const TournamentMember&);
~TournamentMember();
inline void setFirstName(char*);
以及带有TournamentMember.cpp的:
inline void TournamentMember::setFirstName(char* _firstName){
strcpy(firstName, _firstName);
}
(我定义了所有其他功能,但未附加它们)。当我想运行代码时,我收到未定义的对'TournamentMember :: setFirtstName(char *)的引用。我不明白我的代码有什么问题,因为我在类以及程序中都将函数setFirstName定义为char *。
答案 0 :(得分:2)
您在TournamentMember.cpp中对setFirstName
的定义标记为inline
。这意味着该定义仅存在于TournamentMember.cpp中。无法从其他源文件(例如testtournamentmember.cpp)访问该定义。
顺便说一句,当您去编译代码而不是运行它时,应该会出现此错误。您可能正在使用一个可以一步一步进行编译和运行的进程,但是您仍然应该意识到这一区别。