【发布时间】:2014-08-23 05:13:14
【问题描述】:
我有一个类,我希望在稍后的程序初始化时实例化它。在此之前,我绝对不想要该类的任何实例。我希望这个实例在全局范围内可用。
最简单的方法是拥有一个全局变量,它是对该类的引用,这很简单 - 只需在类实例化后立即分配引用。除了在那之前我需要用 something 填充该引用,否则我将 声明为引用但未初始化,我宁愿不创建所述的虚拟实例类。
什么是让它工作的正确方法?
configClass& global_config; // = ?
init()
{
//... other prerequisites for loading the config
static configClass _cfg(CONFIG_FILE,other_params);
global_config = _cfg;
//more code, using global_config
}
【问题讨论】:
-
您不能使引用指向与创建它的对象不同的对象。你需要一种不同的方法。也许是一个指针?或具有静态成员的函数。
-
I want this instance to be available in global scope为什么? -
@LightnessRacesinOrbit:因为它在所有代码的成千上万个地方都使用过,并且将其隐藏在任何命名空间或类似的东西后面会极大地适得其反吗?但为了您的安心,这一切都在一个命名空间内。
-
@SF。您在“成千上万的地方”使用全局变量?神圣的汉娜,我很遗憾听到这个消息;(
-
全局变量的存在始于动态分配成本太高而无法使用的时候。今天没有理由使用用户模式进程全局变量。