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的文件来写的,结果运行错误,但是当我把他们放在一起时又不会出错了。。。请问分开写时应该注意什么呢?求大神指教 展开
#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的文件来写的,结果运行错误,但是当我把他们放在一起时又不会出错了。。。请问分开写时应该注意什么呢?求大神指教 展开
3个回答
展开全部
//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");
}
展开全部
CPP文件中#ifndef _client_这里, 你在头文旦大件中定义了,所以你的两个函数的实现就不包括了。
一般只在头文件中#ifndef _client_这样做轮圆,为了防止重复包含,但是CPP文件会模桐竖有谁去包含呢?所以CPP中不需要这样做。
一般出现不能解析的外部命令,可以看到输出中有函数名,就可以考虑是有函数有声明而没有定义。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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
#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
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询