file_utils.hとfile_utils.cppという2つのファイルがあり、これらには異なるクラスで使用されるいくつかのメソッドと変数が含まれています。外観の例を次に示します。
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
エラーが発生します。何が問題ですか?それは設計の観点からも良い考えですか、それとも代わりに静的メンバーとメソッドを持つクラスを使用する必要がありますか?