与其他用户一样,我试图实现不可能或非常复杂的事情。我读了很多问题,比如“遍历所有派生类”,但正如我所见,这是不可能的。但我想问的是可以自动注册派生类。也许使用一些模板。或者,例如使用带有特殊名称的模板函数(例如template<typename T> void register(SomeFabric* f, T* t = new T())
)并遍历所有'注册'类型(如果可能的话)。或者使用另一个特殊函数(例如void register(SomeFabric* f, Base* base)
)并遍历所有可用类,如果可以使用此参数调用此特殊函数,并且可以实例化可迭代类 - 请调用它。 如果完全不可能:注册类最简单(开发者操作的最低数量)方式是什么?使用C++自动注册派生类11
0
A
回答
0
最简单的解决办法是保持在基类的静态字段派生类的列表:
static vector<*BaseClass> children;
然后寄存器新的BaseClass的构造函数实例:
children.push_back(this)
而且删除来自基类析构函数中的注册表。
不要从派生类忘记调用父类的构造:
Derived(int a, int b) : BaseClass() {...}
注意,虽然这种解决方案将工作,它是差但从架构的角度。它介绍了全球的状态以及与之相关的所有问题。
相关问题
- 1. 自动使用派生类
- 2. C#make类自动注册
- 3. 自动将C++ 11自动关键字重写为派生类型
- 4. C++使用派生类
- 5. 从派生自同一类的类派生的C++子类
- 6. 统一自动注册类
- 7. C++派生类
- 8. C++派生类
- 9. C++:调用派生类
- 10. 使用Boost序列化注册用户提供的派生类型
- 11. C#。我可以自动替换派生类而不是基类
- 12. C++派生自本机类型
- 13. 如何自动派生DataKinds派生类型的Typeable实例?
- 14. 派生自抽象类,仅引用派生类
- 15. 在中央列表中注册派生类
- 16. 使用在基类派生类,而派生类的基类
- 17. C++ - 派生类到基类
- 18. 将shared_ptr向下转换为包含weak_ptr C++的派生类11
- 19. C++ 11基本构造委托/转发到派生类与“使用”关键字
- 20. 派生自动类装饰(或验证)
- 21. 使用Unity,如何使用通用接口自动注册泛型类,而无需注册每种类型
- 22. C++和Lua:自动注册功能
- 23. StructureMap自动注册后代类
- 24. 非托管C++在生成或不生成COM时使用自动注册来调用C#dll?
- 25. C++:构造派生类时自动运行函数
- 26. 使用声明(派生类)
- 27. 通过使用派生类
- 28. 使用JNI派生类型
- 29. 使用在派生类
- 30. Kryo会自动注册字段中使用的类吗?
您似乎想要自我注册抽象工厂。像这里描述的那样:http://www.dorodnic.com/blog/2014/03/29/abstract-factory/ – Baldrick
@Baldrick叶,这是我想要的。 Thankyou为链接。这非常有用。如果没有人会提供更有用的东西,我想我会请你写回答。 – Megaxela
您正在讨论解决某些问题的方法。该解决方案与“迭代所有派生类”或“注册派生类”有关。首先,这意味着什么*不清楚*(你的意思是实例吗?类?你想要在注册表中重复使用哪些类?),并且计算出你想要的功能是不可能的,因为你不需要提到这个“解决方案”试图解决的根本问题。请澄清潜在的问题。通过迭代派生类来明确你的意思,并给出具体的程序行为例子。 – Yakk