【问题标题】: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 有太多可能出错的可能性。

标签: c++ templates generics pointers vector


【解决方案1】:

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

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

【讨论】:

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