我有一個情況,我正在使用一個宏來生成簡單的子類。我目前得到它定義爲:使用C++宏查找/替換?
#define REGISTER(TYPE, NAME) \
struct NAME ## Class : public ParentClass \
{ \
NAME ## Class() : ParentClass (# NAME); \
}
我真正想要的名稱包含一個句點,但隨後的宏被擴展到這一點,並不起作用:
struct Simple.ClassClass : public ParentClass
{
Simple.ClassClass() : ParentClass ("Simple.Class");
};
反正是有使用預處理器定義來擺脫名稱中的時間段?然後,我可以在字符串中保留句點(根據需要)並使類名使用不同的(合法)字符。
類名不重要(只要它是唯一的)。唯一重要的是可讀的字符串。
我有機會獲得Boost.Preprocessor,但我不明白,如果任何,這將是對這項有益的。
謝謝。
編輯:這背後的原因是我實現Industrial Strength Pluggable Factories作爲模板,並很容易地生成製造商類的宏。雖然可能有很多製造商ID,所以我希望能夠使用點「命名空間」。我現在正在使用下劃線,我只是好奇,如果我可以用點來代替它,因爲我覺得它在視覺上更令人愉悅。唯一重要的部分是,由於除我以外的另一個編寫代碼的人不會看到宏所產生的代碼,所以宏不能在幕後做任何陰險的事情。所以無論什麼字符串都被放入,因爲名稱必須是用於檢索項目的鍵。
我的問題,今天上午relooked,我想我可以避開宏一起。不管怎麼說,還是要謝謝你。
什麼是'(簡單)(類)'類型的東西?我不認爲你可以輕鬆管理點名 – Anycorn 2010-08-11 04:23:40
@ Jonathan Sternberg,背後的理由是什麼?你爲什麼想要這樣做(宏觀)? – liaK 2010-08-11 05:26:13
會下劃線而不是週期? – greatwolf 2010-08-11 05:33:22