简体   繁体   中英

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

i want a compiler (MinGW g++/Linux g++) to ignore some defined stuff in a header file:

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

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

The problem: methodA() and methodB() can't be pure virtual because the class would be later instanciated, so it gives a compiler error. The reason for doing that: i want to have a readable header file, so this methods should be appear in files - the methods are only used as in the QT framework to work as "signals", which are translated as Strings with a macro. May be it is possible to declare a macro to let it be as annotation? i saw this in the QT5 framework (declared signal methods) but its not working with my code... What i not want to do: list the methods only as DOC annotation.

Thanks for a idea how to solve that ;)

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

will cause a compiler error if you ever try to use methodA(int) , but not if you're trying to use methodA(double) .

Found a way to ignore methods as described what i want to do:

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

so i can write in header files

class A {
    public:
        IGNORE void methodA();

        void doStuff(const char *stuff);

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

Now the compiler is happy and i can pass methods as args :) Thanks for the tips

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM