是否可能编写一个trait,用于返回其所使用的类的类型?如何在下面的示例中实现get_class?
class Foo {
typedef get_class::type type; // type = Foo now
};
注意:我需要编写一个宏,该宏在类主体中进行扩展,用于多个类,因此我不能简单地编写“typedef Foo type;”
使用情况:
我有一个“reflectable(...)”宏,它生成基础设施以遍历成员、访问它们并使用它们的名称查找:
class Foo
{
friend std::ostream &operator<<(std::ostream &, const Foo&);
reflectable(
(int) bar,
(double) baz
)
}
reflectable(...)应该是一个宏,这样我就可以将类型和成员名称分别作为字符串获取,以构建地图进行查找。
我希望所有的可反射类都可以流式传输,但如果我将我的reflectable()宏放到私有部分,我必须向类添加友元声明。我希望将其移动到宏中:
friend std::ostream &operator<<(std::ostream &, const get_class::type&);
typedef
其模板参数,并且您需要从Helper<Foo>
派生出Foo
。 - k.v.