我有两个名为file_utils.h和file_utils.cpp的文件,其中包含由不同类使用的一些方法和变量。下面是它的外观的例子:C++ extern关键字和全局变量
file_utils.h:
namespace my_namespace
{
extern Foo* foo;
extern Bar* bar;
void my_function(Blah* blah);
}
file_utils.cpp
#include "file_utils.h"
void my_namespace::my_function(Blah* blah)
{
foo = 0; // undefined reference to my_namespace::foo
bar = 0; // undefined reference to my_namespace::bar
//...
}
some_class.cpp
#include "file_utils.h"
some_function()
{
my_namespace::my_function(blah);
this->foo = *my_namespace::foo; // will that work ok?
}
所以误差在评论。如果我删除了extern关键字,我得到multiple definition of my_namespace::foo
错误。问题是什么?从设计角度来看,这甚至是一个好主意,还是应该尝试使用静态成员和方法来代替类?
你必须在**中定义**你的对象。cpp'文件,而'extern'只声明**一个静态链接的对象。 – akappa