我有一個奇怪的問題,顯然沒有被初始化,因爲它應該是一個靜態變量。
我有一個運行Windows和Linux的巨大項目。由於Linux開發人員沒有這個問題,我建議這是某種有線Visual Studio的東西。
頭文件靜態變量未初始化
class MyClass
{
// some other stuff here
...
private:
static AnotherClass* const Default_;
};
CPP文件
AnotherClass* const MyClass::Default_(new AnotherClass(""));
MyClass(AnotherClass* const var)
{
assert(Default_);
...
}
問題是,Default_
總是NULL
。我也在該變量的初始化時嘗試了一個斷點,但我無法捕捉到它。
另一個班有類似的問題。
CPP文件
std::string const MyClass::MyString_ ("someText");
MyClass::MyClass()
{
assert(MyString_ != "");
...
}
在這種情況下MyString_
總是空的。所以再次沒有初始化。
有沒有人有關於此的想法?這是一個Visual Studio設置問題嗎?
乾杯西蒙
編輯:
我也遇到了靜態初始化慘敗。但我不確定這是否會成爲問題,因爲Linux編譯器沒有問題。編譯器在這種情況下不應該以同樣的方式作出反應嗎?
嘗試從頭開始創建一個新項目,看看它是否發生在那裏以及 – shoosh 2010-04-27 10:57:00
對不起,不行。正如我所說這是一個非常大的項目。 – 2010-04-27 10:57:43
我假設第一個例子是一個錯字,應該是'AnotherClass * const MyClass :: Default_(new AnotherClass(「」));' – 2010-04-27 10:59:22