c++ - 引用C++宏中的类

标签 c++ class macros self-reference

我要写

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/

相关文章:

c - 在带有数字符号的 printf 中使用宏

c++ - 如果类型是在命名空间内创建的,我如何才能知道?

c++ - 如何在结构/类中获取有关 "current type"的信息?

c++ - C++中的cin运算符顺序是什么

c++ - 如何在 C++ 中将多个不同类型的变量打印到控制台

c++ - 使用 TensorFlow 训练模型和 C API 进行预测

java - 我怎样才能 "Connect"2 类

c# - 编码包含字符串数组的结构数组

c++ 在自定义异常的方法/构造函数签名中有和没有 throw()

javascript - 如何动态更改样式表中 CSS 属性的值?