c++ - 允许用户在 C++ 中的类上定义属性

标签 c++ boost

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

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

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

最佳答案

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

一旦有了它,它就派生自后者:

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

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

如果您想链接更多属性,请使用多重继承。

简单又很棒,对吧?

关于c++ - 允许用户在 C++ 中的类上定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35672360/

相关文章:

c++ - execvp 不能与 cut 一起使用

c++ - 使用 Boost 库的错误

c++ - boost_python with python 3.5 from anaconda - (few) undefined references

c++ - 插入二维 vector

c++ - 是否有任何带有 C++ 绑定(bind)的开源、硬件加速的跨平台物理库?

c++ - 将字符串添加到 vector<const char *> 会导致 strtok() 出现奇怪的行为

c++ - std::bind 函数中没有可行的重载 '='

c++ - boost::posix_time::time_facet 和 boost::posix_time::time_input_facet 之间的不一致 '%f' 行为

c++ - 特定 std::bind 返回的数据类型到底是什么?

c++ - 通过指针访问虚类