【问题标题】:Class Template Object cannot be created无法创建类模板对象
【发布时间】:2013-03-31 06:54:54
【问题描述】:

我在我的一个类中使用模板,但由于某种原因,当我创建一个对象时,我得到的错误如下:类模板“Test”的参数列表丢失。

template <class T>
class Test
{
 private: 
     T variable;

 public:
     Test(){cout << "CONSTRUCTOR CALLED" << endl;}
};

在 main.cpp 中

Test object;

编译器显示以下内容:“测试”:使用类模板需要模板参数列表。

template <class T>
Test<T>::Test() 
{
  cout << "CONSTRUCTOR CALLED" << endl;
}

那也没用

【问题讨论】:

  • 如果你的类使用模板,你应该在尝试使用它时给它模板参数(或参数)(即Test&lt;int&gt; object;
  • 你需要用一个类型参数化它,比如Test&lt;int&gt; object

标签: c++ class templates constructor


【解决方案1】:

您必须指定要实例化class template 的类型。 例如:

  Test<int> object;

想想你如何使用来自std library 的类模板,比如vectors, 您必须指定类型,例如int,例如vector&lt;int&gt; 。这和那个道理是一样的。

对于构造函数的定义,它应该可以工作,但是,你必须将声明和定义放在同一个头文件中,否则编译器找不到定义。 (有些技术可以在不同的文件中分离声明和定义,例如头文件末尾的“export”和“#include cpp file”)

【讨论】:

    猜你喜欢
    • 2012-08-14
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 2017-03-07
    相关资源
    最近更新 更多