Ich versuche, ein C++ Makro zu schreiben, eine Reihe von Unterklassen zu definieren, mit einer Vorlage und einen Farbnamen wie so:Haben Sie Probleme mit Makros in C++
#define DECLARE_SET_ELEMENT(color) class ##color##SetElement : public SetElement { public: ##color##SetElement(std::string name); int getValue() override; };
so dass ich wie nutzen kann :
DECLARE_SET_ELEMENT(Blue) // -> class BlueSetElement ...
DECLARE_SET_ELEMENT(Red) // -> class RedSetElement ...
...
Aber die Makrodefinition scheint nicht richtig zu funktionieren. Wie sollte es sein, damit es so funktioniert, wie ich es vorschlage?
Warum verwenden Sie eigentlich keine Vorlage? Dafür sind sie buchstäblich da. –
Ja, wir würden mehr Kontext brauchen, aber Makros scheinen eine komische Wahl zu sein. Wahrscheinlich möchten Sie lieber von einer gemeinsamen Basisklasse erben. –
Es erbt eine gemeinsame Basisklasse, daher die 'class ...: public SetElement';) –