包含对其自身实例的引用的标准向量的模板类

Posted

技术标签:

【中文标题】包含对其自身实例的引用的标准向量的模板类【英文标题】:template class containing a stdvector of references to its own instances 【发布时间】:2012-10-19 03:56:36 【问题描述】:

我对 C++ 比较陌生,我是第一次尝试构建复杂的模板结构。

作为模板类 Foo 的成员,我如何声明一个由 Foo* 元素组成的 std::vector,但这可能是各种类型的?

#include <vector>

template <typename T>
class Foo 
    T mValue;
    std::vector< Foo<T>* > mFooParameters;  // <---- I would like this vector to contain
                                            //       any sort of Foo<T>* elements,
                                            //       Foo<int>*, Foo<double>*, etc.
;

是直截了当、可能但复杂还是不可能?

感谢您的回答!

【问题讨论】:

我认为这是 ***.com/questions/6274136/… 的副本,但我不明白您的问题文本与其标题有何关系。 谢谢 jogojapan。这可能是因为我迷失了模板的东西。我正在查看您的链接! 那么,它是重复的吗? (如果不是,有什么区别?) 这并不完全是重复的,因为我认为我使用模板存在固有的困难。多态性是答案,请参阅我对@h3nr1x 答案的评论。 【参考方案1】:

如果您的向量类型都是相关的,请使用@jogojapan 提供的链接中解释的多态性,如果类型根本不相关,请使用void* 的向量来保存指向您的数据的指针(虽然有点混乱)

【讨论】:

我想我将使用多态性来超越所有可能的Foo&lt;T&gt;,并使用一个独特的、更一般的定义。谢谢!

以上是关于包含对其自身实例的引用的标准向量的模板类的主要内容,如果未能解决你的问题,请参考以下文章

非模板类的模板构造函数出现问题[重复]

具有不同模板的派生类对象的向量

C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板和友元

_类模板与向量

返回对模板向量的引用

嵌套模板中的 operator= (T *r)