我有一个情况,我正在使用一个宏来生成简单的子类。我目前得到它定义为:使用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