c++ - 如何在 C++ 中实现元类?

标签 c++ metaclass

我已经阅读了一些关于什么是元类的资料,但我想知道它们是否可以在 C++ 中实现。

我知道 Qt 库正在使用 MetaObjects,但它使用 C++ 的扩展来实现它。我想知道是否可以直接使用 C++。

谢谢。

最佳答案

如果元类的工作定义是“其实例化本身就是类的语言实体”,那么泛型就是 C++ 中的元类:

#include <iostream>
using namespace std;

template <typename T>
class Meta {
public:
    Meta(const T&init) : mData(init) {}
// ...
private:
    T mData;

};

int main(int, char **) {
  cout << "The size of Meta<double> is " << sizeof(Meta<double>) << endl ;
  return 0;
}

在倒数第二行中使用 Meta 迫使编译器实例化 Meta 类; sizeof 运算符对 Meta 进行操作,从而证明这不仅仅是语义糖并且该类已被实例化。即使没有实例化 Meta 类型的对象,程序也已完成。

关于c++ - 如何在 C++ 中实现元类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/745819/

相关文章:

C++ Matrix-Chain-Order/无法获得所需的输出

c++ - 抑制 IE8 中的脚本错误 (C++)

python - 如何使用 __subclasscheck__ 魔术方法?

c++ - 将 typedef 与构造函数参数一起使用

python - python枚举的 pretty-print

Python:使用用户输入作为类名的类工厂

c++ - 何时以及如何默认初始化一个 const 变量?

c++ - to_string(42) 不止一个实例匹配参数

python - 自定义元类以在 SQLAlchemy 中创建混合属性

c++ - 使用四元数防止绕特定轴旋转