在C++中有什么方法可以收集不同类型的类并调用它们的方法吗? 我想做的是如下,
template<namespace T>
class A
{
A method_A1(T a)
{
...
}
void method_A2(int aa)
{
...
}
...
};
class B
{
...
};
class C
{
...
};
class D
{
...
};
A<B> *b;
A<C> *c;
A<D> *d;
b -> method_A2(3);
c -> method_A2(5);
在这段代码中,对象 b、c、d 它们是完全不同的对象,对吧?不相关的。 但是我想用数组绑定(bind)它们,所以...
z[0] = b;
z[1] = c;
z[2] = d;
像这样。 我找到了一些解决方案,但是这些解决方案仅用于收集不同类型。 (对继承的对象使用 void* 数组或 vector )我也想访问他们的方法。
z[0] -> method_A2(3);
z[1] -> method_A3(5);
像这样。 遇到这种情况我该怎么办?
提前致谢。
最佳答案
typedef boost::variant<A<B>, A<C>, A<D>> AVariant;
std::array<AVariant, 3> z;
z[0] = *b;
z[1] = *c;
z[2] = *d;
然后您可以根据需要检查每个元素的类型,或者使用 boost::static_visitor
“访问”它们,如下所示:http://www.boost.org/doc/libs/release/doc/html/variant.html
关于c++ - 收集不同类型的类并在 C++ 中调用它们的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33972419/