小编Rag*_*gas的帖子

C++自注册类的安全性如何?

来自这个线程我在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甚至会发生,因为主程序中的任何内容都不会在编译时显式地调用它?

提前感谢您的任何答案.

c++ gcc class standards-compliance

5
推荐指数
1
解决办法
4428
查看次数

标签 统计

c++ ×1

class ×1

gcc ×1

standards-compliance ×1