ヘッダファイルglobal.h
にグローバル名前空間を定義しようとしています。他の.cppファイル内ヘッダファイルに名前空間を使用するときの多重定義
...
namespace g {
const int g_0 = 0;
const int g_1 = 1;
}
...
ときJUSTは#include "global.h"
私は例えば、他の.cppファイルにg_0
とg_1
を使用しようとすると、コンパイラはエラーに
multiple definition of g::g_0
multiple definition of g::g_1
を与えます。何か特別なグローバル変数を宣言するために、名前空間を使用して
ISO C++ forbids in-class initialization of non-const static member...
あります:
int g_0_copy = g::g_0;
int g_1_copy = g::g_1;
それはというエラーがスローされますか? (この場合はC++ 98を使用する必要があります)
名前空間が同じコンパイルユニットに2回含まれていると、コンパイラはエラーを発行します。さもなければ、定数は静的なリンケージを持つ。 –
愚かな質問です。あなたはヘッダーにガードを含んでいますか? – StoryTeller
フルコードが必要です。 「クラス内初期化」に関する注釈は、あなたが私たちに示す以上のものがあることを私に伝えます。 – SergeyA