想象一下,我有一个名为C++的类MyClass
.
想象一下,我无法访问它的源代码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
type 的实例变量MyClass
(我无法将逻辑更改为MyClass *pMyInstance
).
非常感谢阅读.
因为你已经限制了new
无法使用的问题.您应该能够始终创建对象并将其复制到全局实例.例如:
MyClass createMyClass() { doGlobalSetup(); return MyClass(1, 2, 3); } MyClass myInstance = createMyClass(); int main() { myInstance.doSomething(); return 0; }