2013-04-09 124 views
2

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

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; 
} 

这也没有工作

+0

如果您的类使用模板,则应该为其提供模板参数(或参数)当你尝试使用它时(例如'Test object;') – Nbr44 2013-04-09 01:35:36

+0

你需要使用类型来对它进行参数化,比如'Test object'。 – Yuushi 2013-04-09 01:36:17

回答

0

你必须指定要实例化一个class template类型。 例如:

Test<int> object; 

想想你如何使用类模板从std libraryvectors, 你必须指定类型,如int,例如vector<int>。这与此相同。

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