64,649
社区成员
发帖
与我相关
我的任务
分享
你好,您可以说的详细一点么?? 我不太能理解 放到cpp文件中去
#include "comA.h"
而在ComA.cpp中也有
#include "comA.h"
当编译程序时,相当于x被定义了两次。
《C++Primer第四版中文版》中提到
任何在多个文件中使用的变量都需要有与定义分离的声明。
使用extern关键字在ComA.h中声明x,而不是定义x;在ComA.cpp中定义x
变量的 定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程
序中,变量有且仅有一个定义。声明用于向程序表明变量的类型和名字。可以通过使用 extern 关键字声明变量名而不定义它。
在ComA.h中有
namespace A {
extern int x;//声明x
void fun();
}
在ComA.cpp中有
#include "ComA.h"
#include <iostream>
void A::fun() {
std::cout << "A" << std::endl;
}
int A::x = 1;//定义x
全局部变量放到一个源文件中,如int a; 其他地方使用时,全局写上:extern int a; 然后就可以用了
放到cpp文件中去