2014-07-12 27 views
0

是否有一个容器可以在Qt中存储不同类型的容器(是的,我真的需要使用不同类型的类型)?我必须创建一个新班级来做到这一点?如果是这样,你能给我一个创建它的提示吗?在Qt中动态输入容器

+0

这将是QVariant。 – user2672165

+0

我可以将QVariant设置为QMap吗? – user3713179

+0

是的,您可以存储'QMap '甚至用户定义的类型,请参阅http://stackoverflow.com/questions/3193275/how-to-verify-qvariant-of-type-qvariantusertype-is-expected-请输入 – user2672165

回答

1
  1. 大多数容器中的Qt是template based,那么你可以将它们用于不同的静态类型。

  2. 另一种选择是使用使用QVariant,例如:QVector<QVariant> vec;

  3. 更动态的解决方案是使用polymorphism,你可以存储指向基类的指针等。


PS:作为一般规则,你应该避免这种模式。从有效的C++,斯科特迈尔斯:

任何时候,你发现自己写形式的代码“如果对象是类型T1的 ,然后做一些事情,但如果它的类型T2的,然后做 别的东西,“拍你自己。

+0

我想知道多态性如何在我的情况下有所帮助 – user3713179