0

我想要一个编译器(MinGW g++/Linux g++)忽略头文件中一些定义的东西:

class A {
    public:
       A();
       virtual ~A();

    IGNORE void methodA(); // = 0 -> not possible
    IGNORE void methodB(); // = 0 -> not possible
}

问题:methodA() 和 methodB() 不能是纯虚拟的,因为该类稍后会被实例化,因此会产生编译器错误。这样做的原因:我想要一个可读的头文件,所以这个方法应该出现在文件中 - 这些方法仅在 QT 框架中用作“信号”,它被翻译为带有宏的字符串。是否可以声明一个宏以使其作为注释?我在 QT5 框架(声明的信号方法)中看到了这一点,但它不适用于我的代码......我不想做的事情:仅将方法列为 DOC 注释。

感谢您提出如何解决该问题的想法;)

4

2 回答 2

2
void methodA(int) = delete; // note: requires C++11
void methodA(double);

如果您尝试使用 会导致编译器错误methodA(int),但如果您尝试使用methodA(double).

于 2013-10-25T17:13:19.340 回答
0

找到了一种方法来忽略我想要做的描述的方法:

#define IGNORE __attribute__((unused))
#define METHOD_TO_STRING(a) ""#a

所以我可以写头文件

class A {
    public:
        IGNORE void methodA();

        void doStuff(const char *stuff);

        void methodB() {
            doStuff(METHOD_TO_STRING(methodA());
        }
};

现在编译器很高兴,我可以将方法作为 args 传递 :) 感谢您的提示

于 2013-10-25T21:19:34.670 回答