允许用户在类上定义属性C++

Allow user's defined properties on a class in C++

本文关键字:定义 属性 C++ 许用户 用户      更新时间:2023-10-16

我正在一个项目上使用boost,我想在Foo类上使用捆绑属性机制。这是为了允许用户向类添加结构等数据。

实际上,Foo是一个类,其使用方式与Boost Graph Library中图形上的边缘类似。例如,Foo需要包含用户定义的数据(标签,ID,...),用户可以在算法过程中通过访问者处理这些数据。

但是,我无法理解如何使用元编程将此功能添加到我的类 Foo 中。你能解释一下一些设计模式吗?

这背后的想法很简单。宿主类将托管类作为模板参数。

一旦拥有它,它就从后者派生出来:

template <class T>
template class Host : public T
{
};

正如继承规则所指定的那样,所有公共成员都可以从派生类访问。

如果要链接更多属性,请使用乘法继承。

简单而令人敬畏,对吧?