我有一个奇怪的问题,显然没有被初始化,因为它应该是一个静态变量。
我有一个运行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