我要写
struct Foo{
MY_MACRO
};
然后扩展成
struct Foo{
void bar(Foo&){}
};
如何定义 MY_MACRO?
我唯一能想到的是:
#define MY_MARCO(X) void bar(X&){}
struct Foo{
MY_MACRO(Foo)
};
这非常接近但不太理想,因为我不想重复类名。
不幸的是,以下内容无法编译:
struct Foo{
void bar(decltype(*this)&){}
};
最佳答案
这与this question密切相关.答案是你不能(还)写一些东西来使用你所在的类定义的类型。你将不得不编写一个包含类定义开头的宏(即 struct Foo)
和一些促进 typedef 的机制。
关于c++ - 引用C++宏中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28254143/