我有一對類。其中一人有一組靜態常量uint32_t的的(下面的代碼是下調爲例):訪問多個源文件中的C++靜態類成員變量
class Foo {
public:
static const uint32_t BAZ;
void RunMe(void);
};
class Bar {
public:
void RunMeAlso(void);
};
我做的每CPP文件一類的平常的事情,因爲實際的類是相當可觀,但我遇到了一個問題。 Foo::RunMe()
和Bar::RunMeAlso()
都訪問值Foo::BAZ
。
我已經在foo.cpp中定義了const uint32_t Foo::BAZ = 1;
,但是在VS2010中bar.cpp(在switch語句中它被用作一個case標籤)中遇到了編譯錯誤(這個代碼需要是可移植的,但我還沒有用gcc檢查過它)。這兩個頭文件都包含在這兩個源文件中......並嘗試在bar.cpp中放入某種外部引用,以告訴編譯器它位於不同的翻譯單元中並不能解決它(創建更多編譯錯誤)...當然,我在這類主題上找到的所有例子都是針對單個類/文件的簡單情況,其中有人不知道/忘記了除了聲明之外還使用了定義。
有沒有人想過如何解決這個問題? (我寧願不必使用枚舉,但會如果這是唯一的選擇,因爲我敢肯定,這將編譯)
TIA,
-J
你得到了什麼確切的錯誤? – Drakosha
我想你應該面對鏈接器錯誤而不是編譯器錯誤。你能發佈錯誤嗎? – iammilind
bar.cpp中的代碼如何引用Foo :: BAZ? – kennbrodhagen