c++ - 无法创建类模板对象

标签 c++ class templates constructor

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

那也没用

最佳答案

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

  Test<int> object;

想想你如何使用 std library 中的类模板喜欢vectors , 您必须指定类型,例如 int ,例如vector<int> .道理是一样的。

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

关于c++ - 无法创建类模板对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15891860/

相关文章:

python - 什么时候用类,什么时候用字典?

c++ - decltype 与具有默认参数的函数模板会产生困惑的结果(一个有趣的问题或 gcc 的错误)

c++ - 可以从模板类型中自动获取基类的类型吗?

c++ - 将模板函数传递给另一个采用 typedef 参数的函数

c++ - 默认(隐式)构造函数的作用到底是什么?

python-clang 因段错误而崩溃

c++ - c++访问模板变量的方法

java - 如何从Java中的不同类获取对象的名称

c++ - 为什么我的 visual studio .obj 文件比输出的 .exe 文件大?

C++ 字符串\vector 初始化