未定义参考字符*

时间:2018-12-01 15:25:16

标签: c++ class

我在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 *。

1 个答案:

答案 0 :(得分:2)

您在TournamentMember.cpp中对setFirstName的定义标记为inline。这意味着该定义仅存在于TournamentMember.cpp中。无法从其他源文件(例如testtournamentmember.cpp)访问该定义。

顺便说一句,当您去编译代码而不是运行它时,应该会出现此错误。您可能正在使用一个可以一步一步进行编译和运行的进程,但是您仍然应该意识到这一区别。