来自这个线程我在c ++中实现了一个类似的系统到那里选择的解决方案.
我现在的问题是用户Daniel James在那里说这个解决方案可能不适用于每个编译器(我现在使用的是gcc)并且没有在c ++标准中定义.
假设我有一个接口的抽象基类和一个工厂类作为单例,它存储指向构造从该接口派生的特定类的函数的指针.
然后我有一个看起来大致如下的助手类:
base.hpp
...
class implRegistrator {
public:
implRegistrator(constructPointer) {
factory::registerImpl(constructPointer);
};
}
Run Code Online (Sandbox Code Playgroud)
并且(通过宏)创建此类的对象以注册自身的实现:
impl1.cpp
...
implRegistrator* impl1 = new implRegistrator(getConstructPointer());
Run Code Online (Sandbox Code Playgroud)
这个解决方案与C++标准的兼容性如何?是否可以安全地假设类实例化ind impl1.cpp甚至会发生,因为主程序中的任何内容都不会在编译时显式地调用它?
提前感谢您的任何答案.