我有兩個名爲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