我对静态变量或其他方式有疑问。
我有一个大师班,PatternMatcher。我有几个派生单位,具体取决于使用的匹配器。现在每个子类都需要存储一个浮点向量,但在每个类中它是常量。该向量的数据是在初始化期间读取的,最大为 1GB(我拥有的最小的是 1MB,最大的是 1GB)。目前,当我有两个 Matcher_A 实例时,它将分配两倍的内存。我事先不知道要使用哪些匹配器(每次运行将是三个匹配器,您可以多次使用同一个匹配器)。我宁愿不在运行时检查所需的匹配器是否已经在某处初始化,因为这将需要为我所做的每次更改添加额外的代码。
目前我分配了3个匹配器
PatternMatcher* a = new PMMatcherA();
PatternMatcher* b = new PMMatcherB();
PatternMatcher* c = new PMMatcherC();
,但由于它们是用户选择的,因此例如 A 和 C 可能相同。当我通过 运行检查时typeid(a).name();
,它会给我 PatternMatcher 作为结果,不管我以前用什么类启动。PatternMatcher 基本上是一个纯粹的虚拟类。
我一直认为静态意味着一个变量在不同的分配中是恒定的,但是当我将我的向量定义为静态时,我会得到一个链接器解析错误。在较早的迭代中,我将这些向量设为全局,但希望将它们本地化到它们的类中。
我需要使用哪些关键字才能使初始化时的向量可用于下一次初始化?一个简单的检查向量大小是否大于 0 就足够了,但是每个对象都使用自己的向量。