我試圖寫一個C++的宏定義了一堆的子類的使用模板和顏色的名稱,像這樣:擁有與C++的宏麻煩
#define DECLARE_SET_ELEMENT(color) class ##color##SetElement : public SetElement { public: ##color##SetElement(std::string name); int getValue() override; };
,這樣我可以使用它像:
DECLARE_SET_ELEMENT(Blue) // -> class BlueSetElement ...
DECLARE_SET_ELEMENT(Red) // -> class RedSetElement ...
...
但宏定義似乎沒有正常工作。它應該如何才能按照我的意圖工作?
爲什麼你不使用模板?這實際上是他們的目的。 –
是的,我們需要更多的上下文,但宏看起來像是一個奇怪的選擇。很可能,你寧願要從一個共同的基類繼承。 –
它確實繼承了一個通用的基類,因此'class ...:public SetElement';) –