C++编程,出现2 个无法解析的外部命令,怎么回事?

//client.h#include<iostream>#include<string>usingnamespacestd;#ifndef_client_#define_... //client.h

#include<iostream>#include<string>using namespace std;#ifndef _client_#define _client_class CLIENT{ public: CLIENT(){ ClientNum++;} static void showClientNum(); private: static string ServerName; static int ClientNum; static void ChangeServerName(string newName); };#endif

//client.cpp
#include "client.h"#include<iostream>#include<string>using namespace std;#ifndef _client_#define _client_string CLIENT::ServerName="MY Client";int CLIENT::ClientNum=0; void CLIENT::ChangeServerName(string newName){ ServerName=newName;}void CLIENT::showClientNum(){ cout<<"客户数量为"<<ClientNum<<endl;}#endif

//test.cpp
#include<iostream>#include<string>#include"client.h"using namespace std;void main(){ CLIENT c1; CLIENT::showClientNum(); CLIENT c2; CLIENT::showClientNum(); system("pause");
}
这是我分开.h 和.cpp的文件来写的,结果运行错误,但是当我把他们放在一起时又不会出错了。。。请问分开写时应该注意什么呢?求大神指教
展开
 我来答
百度网友4eea302
推荐于2018-03-13
知道答主
回答量:21
采纳率:100%
帮助的人:12.4万
展开全部
//client.h
#ifndef _client_
#define _client_
#include<iostream>
#include<string>

using namespace std;


class CLIENT{
 public:
  CLIENT(){ 贺销ClientNum++;}
  static void showClientNum();
 private:
     static string ServerName;
     static int ClientNum;
     static void ChangeServerName(string newName); 
};
#endif

//client.cpp
// 此处不能再次使用#ifndef.....#endif
// 不然client.h中的内容会型拍纳被丢弃。就像一楼说的那样
#include "client.h"
#include<iostream>
#include<string>
using namespace std;

string CLIENT::ServerName="MY Client";
int CLIENT::ClientNum=0; 
void CLIENT::ChangeServerName(string newName)
{
  ServerName=newName;
}
void CLIENT::showClientNum()
{
 cout<<"客户数量为"<<ClientNum<<endl;
}
//test.cpp
#include<iostream>
#include<string>
#include"client.h"
using namespace std;

void main()
{
 CLIENT c1;
 CLIENT::showClientNum();
 CLIENT c2;
 卜没CLIENT::showClientNum();
 system("pause");
}


为何逸云
2014-04-03 · TA获得超过229个赞
知道小有建树答主
回答量:69
采纳率:0%
帮助的人:84.7万
展开全部
  1. CPP文件中#ifndef _client_这里, 你在头文旦大件中定义了,所以你的两个函数的实现就不包括了。

  2. 一般只在头文件中#ifndef _client_这样做轮圆,为了防止重复包含,但是CPP文件会模桐竖有谁去包含呢?所以CPP中不需要这样做。

  3. 一般出现不能解析的外部命令,可以看到输出中有函数名,就可以考虑是有函数有声明而没有定义。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chujiangke001
推荐于2016-02-15 · TA获得超过1605个赞
知道小有建树答主
回答量:1352
采纳率:0%
帮助的人:694万
展开全部
#include<iostream>
#include<冲歼string>
using namespace std;
#ifndef _client_ /橡判链/条件包涵错误把头文件的定义和方法写到一起
#define _client_
class CLIENT{
public:
CLIENT(){ ClientNum++;}
static void showClientNum();
private:
static string ServerName;
static int ClientNum;
static void ChangeServerName(string newName);
};
string CLIENT::ServerName="MY Client";
int CLIENT::ClientNum=0;
void CLIENT::ChangeServerName(string newName){
ServerName=newName;
}
void CLIENT::showClientNum(){
cout<<"客户数量为"梁孙<<ClientNum<<endl;
}
#endif
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式