我想實現一個通用設置結構來訪問我的應用程序的所有設置在一個地方。應用程序的每個模塊都有自己的設置類/結構。我想在常規設置結構中定義一個具有每個模塊設置類型的成員。爲了使事情更容易,我想定義一個REGISTER宏,爲每個模塊設置創建一個新的成員。C++使用宏來定義一個類的類成員
事情是這樣的:
struct Settings
{
// I know this is not working
#define REGISTER_SETTINGS(settings) \
settings _##settings = ##settings();
};
struct ServerSettings
{
int port = 8080;
string ip = "0.0.0.0";
};
REGISTER_SETTINGS(ServerSettings);
struct WindowSettings
{
int width = 640;
int height = 480;
string title = "window";
};
REGISTER_SETTINGS(WindowSettings);
在結束我的設置結構應該是這樣的:
struct Settings
{
ServerSettings _ServerSettings = ServerSettings();
WindowSettings _WindowSettings = WindowSettings();
};
我不知道我應該怎麼弄宏擴展在那裏。
在C++中使用宏的單詞指南:**不要**。 –
您需要從宏中刪除分號,對於一個 – StoryTeller
爲什麼要在結構中定義宏? – user463035818