假设我有一个名为
假设我无法访问
想象一下,这个类本身需要环境预配置...例如...在调用类的构造函数之前,我需要进行一些设置。该类通常应按以下方式使用:
现在我面临的情况是需要创建一个类的全局实例,例如:
问题在于,在这个故事中,
这只是实际故事的简化版本...因此假设:
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
)。
MyClass
可以被复制吗?相关的,我真的会考虑是否要创建一个全局实例... 但是,如果它是可复制的,那么我认为有一个简单的解决方案。 - James Adkisonvoid main
,ISO C++ 仅允许使用int main()
或int main(int, char**)
。 - Danh