C++ 如何忽略头文件中定义的方法

C++ How to ignore defined method in header file?

本文关键字:定义 方法 文件 何忽略 C++      更新时间:2023-10-16

我希望编译器(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注释。

感谢您知道如何解决该;)

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

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

找到了一种方法来忽略方法,如我所描述的那样我想做什么:

#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());
        }
};

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