gpt4 book ai didi

C++:如何在启动时创建类的集合

转载 作者:行者123 更新时间:2023-11-28 07:02:03 28 4
gpt4 key购买 nike

我正在使用 C++ 11。我有 N 个源文件,每个源文件都包含一个从公共(public)基类继承的类。在启动时,我希望每个类都将自己注册到一个集合中。注册将包括 1) 识别类目的所需的数据,2) 用于创建类实例的类工厂。源文件的数量未知。这样做的模式是什么?该解决方案需要与 Visual Studio 2013、gcc 等跨平台兼容。

最佳答案

首先要做的事情:请记住,这只有在类派生自单个基类时才有可能,因为每个 vector 只能存储一种类型的对象实例。

而说到解决方法……可以在对应的*.cpp文件中声明一个对象(在*.h文件中标记为extern):

// SomeClass.h
// <-- class declaration goes here
extern SomeClass someObj;

// SomeClass.cpp
SomeClass someObj;

并将其添加到构造函数中的 vector 中:

SomeClass(){
myVector.push_back(*this);
}

请注意,myVector 需要在此范围内可见。

您的 myVector 应该在您包含 SomeClass.h 文件和一个 SomeClass 实例后填充。请注意,如果填充是在基类中完成的,则不必在每个后续子类中都执行此操作,因为无论如何都会调用基构造函数。

关于C++:如何在启动时创建类的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22290664/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com