2

我在我的一个类中使用模板,但由于某种原因,当我创建一个对象时,我得到的错误如下: 类模板“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;
}

那也没用

4

1 回答 1

0

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

  Test<int> object;

想想你如何使用来自std librarylike的类模板vectors,你必须指定类型,例如int,例如vector<int>。这是同样的道理。

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

于 2013-04-09T01:35:57.837 回答