想象一下,我有一个名为MyClass
的C++类。
想象一下,我无权访问MyClass
的源代码...它包含在一个库中,而我仅提供了MyClass
的库和头文件。
想象一下,类本身需要环境预配置……例如,在可以调用类的构造函数之前,我需要进行一些设置。该类通常按以下方式使用:
void func() {
doGlobalSetup();
MyClass myInstance(1,2,3);
myInstance.doSomething();
...
}
现在,我遇到了需要创建该类的全局实例的情况,例如:
MyClass myInstance(1,2,3);
int main(int argc, char *argv[]) {
doGlobalSetup();
myInstance.doSomething();
}
问题在于,在这个故事中,
MyClass
的实例是在调用doGlobalSetup()
之前创建的。在调用main()
之前将其实例化。我想要做的是将myInstance()
的创建推迟到以后或能够在实例化该类之前以某种方式运行doGlobalSetup()
时。这是实际故事的简化...因此,让我们假设:
MyClass
的内部。 myInstance
的实例变量,其类型为MyClass
(我无法将逻辑更改为MyClass *pMyInstance
)。 非常感谢您的阅读。
最佳答案
由于已经解决了无法使用new
的问题,因此您应该能够像往常一样创建对象并将其复制到全局实例。例如:
MyClass createMyClass()
{
doGlobalSetup();
return MyClass(1, 2, 3);
}
MyClass myInstance = createMyClass();
int main()
{
myInstance.doSomething();
return 0;
}
关于c++ - 推迟C++静态对象的构建-Linux上的GCC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34439233/