链接时错误 初学者需要高手帮忙

dch1287 2005-11-21 03:14:16
/////////////////////////////////////////// main.cpp
#include <iostream>
#include "client.h"

using namespace std;

int main()
{
Client oneClient("akuma",200);
char *changeServerName = new char[20];

cin >> changeServerName;

oneClient.ChangeServerName(changeServerName);

cout << oneClient.getServerName();

return 0;
}

////////////////////////////////////////////// client.h
#include <iostream>
using namespace std;

class Client {
private:
static char *ServerName;
static int ClientNum;
public:
Client(char *itsServerName,int itsServerNum);
static int ChangeServerName(char *changeServerName);
static char *getServerName();
};

/////////////////////////////////////////// client.cpp

#include "client.h"

Client::Client(char *itsServerName,int itsClientNum) {
ServerName = itsServerName;
ClientNum = itsClientNum;
}

Client::ChangeServerName(char *itsServerName) {
ServerName = itsServerName;

return 0;
}

char* Client::getServerName() {
return ServerName;
};


/////////////////////////////////////////////// error
Linking...
client.obj : error LNK2001: unresolved external symbol "private: static int Client::ClientNum" (?ClientNum@Client@@0HA)
client.obj : error LNK2001: unresolved external symbol "private: static char * Client::ServerName" (?ServerName@Client@@0PADA)
Debug/main.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

main.exe - 3 error(s), 0 warning(s)

感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢
...全文
148 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
AleTiff 2005-11-21
  • 打赏
  • 举报
回复
晕!!!这都不明白~~~~唉~~~~

编译器只把cpp编译为obj,链接器从obj中拼装。你再看看你的cpp里有没有Client这个类?没有啊!!!链接器得到一个没有Client这个类的obj,它不向你要它向谁要去???

NND!!!这点小问题都要我回复第二次~~~~~!!!!唉
csucdl 2005-11-21
  • 打赏
  • 举报
回复
char *Client::ServerName = "";
int Client::ClientNum = 0;
csucdl 2005-11-21
  • 打赏
  • 举报
回复
楼上的正解
更好加上初始化
pongba 2005-11-21
  • 打赏
  • 举报
回复
静态变量需要在实现文件内显式定义。
在.cpp文件内加上:
char* Client::ServerName;
int Client::ClientNum;
en2113 2005-11-21
  • 打赏
  • 举报
回复
NND,我也是这个问题
dch1287 2005-11-21
  • 打赏
  • 举报
回复
没有啊 我哪有在 client.h 里定义实现了?
AleTiff 2005-11-21
  • 打赏
  • 举报
回复
它说,,,你不能在.h文件里定义实现,定义了它也装作没看到。NND!编译器好牛B也~~~

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧