gpt4 book ai didi

c++ - 收集不同类型的类并在 C++ 中调用它们的方法

转载 作者:行者123 更新时间:2023-11-28 02:16:15 25 4
gpt4 key购买 nike

在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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com