类型为指向另一个类的对象的泛型类 - 不工作 [关闭]

Posted

技术标签:

【中文标题】类型为指向另一个类的对象的泛型类 - 不工作 [关闭]【英文标题】:Generic class with type as pointer to object of another class - NOT WORKING [closed] 【发布时间】:2012-08-21 12:57:03 【问题描述】:

为什么这不起作用:

class/struct SomeClass

public:
      int     SomeValue;


template <class/struct/typename T> class/struct TClass

public:
        T     TObject;


vector<TClass<SomeClass*>> *vTcSomeClass = new vector<TClass<SomeClass*>>();

这是违法的还是我做错了?

【问题讨论】:

“不工作”是什么意思?你能给我们错误信息吗? 另外,您可以编辑帖子以包含您使用的确切代码吗? 我希望你实际上并没有在你的代码中写class/struct。如果是这样,请在任何地方使用class 如果不使用c++0x,那么&gt;&gt;会被解释为右移而不是右尖括号。请改写&gt; &gt; @Deukalion 我们不需要阅读更多内容,我们需要一些小代码示例来清楚地说明问题。使用您的struct/class/template 有太多可能出错的可能性。 【参考方案1】:

如果您满足以下条件,您的代码应该可以编译:

在类型中选择类/结构之一,在模板参数中选择类/类型名称之一 在类或结构定义后使用分号 在嵌套模板中写入 &gt; &gt; 而不是 &gt;&gt;(C++11 之前)

【讨论】:

关于你的第一点,我认为你可以在模板中使用struct可以吗?!我以为你只能使用classtypename。关于第三点,只有在没有现代编译器的情况下才需要它。 struct 不能用作模板参数。 我之前有过,只是写了一个例子来说明我的代码看起来像什么来最小化代码。我尝试过使用 structs/class/template,这就是为什么我添加了我希望人们理解的那些。我也把它嵌套了>而不是>,还是不行。 错误 C2664: 'TClass::TClass(const TClass &)' : 无法将参数 1 从 'TClass *' 转换为 'const TClass &' 嗯,错误与问题无关。只是认为它与此有关。

以上是关于类型为指向另一个类的对象的泛型类 - 不工作 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

当类的泛型相关时,如何在两个泛型类之间创建类似子类型的关系呢

泛型类的可选方法参数的类型

java 定义泛型类的问题

泛型类的基本使用

2018-7-26-随笔-泛型

当类的泛型相关时,如何在两个泛型类之间创建类似子类型的关系