Проблема при использовании #define в VS 2019

Есть некоторый код:

#define createClassEvent(classname, mainclass) class classname : public EventFunction {\
private:\
mainclass* cl;\
void(mainclass:: * func)();\
public:\
virtual void Throw() override {\
    if( cl != nullptr ) { (cl->*func)(); }\
}\
DisplayEvent(mainclass * d, void (mainclass:: * f)()) {\
    cl = d;\
    func = f;\
}\
};


class EventFunction {
private:

public:
virtual void Throw() {}
EventFunction() {}
~EventFunction() {}
};


class Display;
class BlackScreenEffect;


createClassEvent(DisplayEvent, Display)
createClassEvent(BSEevent, BlackScreenEffect)

Моя проблема заключается в том, что когда я вызываю createClassEvent(BSEevent, BlackScreenEffect) - компилятор говорит, что требуется закрывающая круглая скобка. Я пробовал менять их местами, менять названия, но компилятор почему-то принимает только createClassEvent(DisplayEvent, Display). В чём здесь может быть проблема?


Ответы (1 шт):

Автор решения: Igor

Дело в

DisplayEvent(mainclass * d, void (mainclass:: * f)()) {\
^^^^^^^^^^^^
    cl = d;\
    func = f;\
}\

Вероятно, имелось в виду

classname(mainclass * d, void (mainclass:: * f)()) {\
    cl = d;\
    func = f;\
}\
→ Ссылка