C++ 我一直在使用c++;

C++ 我一直在使用c++;,c++,class,templates,arraylist,C++,Class,Templates,Arraylist,因此,我一直在尝试创建一个简单的数组列表类,并在一开始就准备就绪 我的头文件(我删除了.cpp文件,但仍然收到了相同的消息) \ifndef ARRAYLIST\u H #定义数组列表 #包括 使用名称空间std; 模板 类数组列表{ 私人: T*arr; 整数长度; 公众: ArrayList(); 无效插入(T项); 作废打印(); //friend&ostream operatormain.obj:错误LNK2019:未解析的外部符号“public:u thiscall ArrayList

因此,我一直在尝试创建一个简单的数组列表类,并在一开始就准备就绪

我的头文件(我删除了.cpp文件,但仍然收到了相同的消息)

\ifndef ARRAYLIST\u H
#定义数组列表
#包括
使用名称空间std;
模板
类数组列表{
私人:
T*arr;
整数长度;
公众:
ArrayList();
无效插入(T项);
作废打印();
//friend&ostream operatormain.obj:错误LNK2019:未解析的外部符号“public:u thiscall ArrayList::ArrayList(void)”(?0$ArrayList@H@@QAE@XZ)在函数_main中引用
1> C:\Users\Gannash\Desktop\Programming\C++WS\XMLReader\Debug\XMLReader.exe:致命错误LNK1120:1未解析的外部

就像您只声明了类的方法,而没有定义它们一样


将所有定义放在标题中

您尚未在.cpp文件中定义ArrayList()、Insert()和Print()。
您需要为这些函数编写代码,或者将它们转换为纯虚拟函数,即
virtualprint()=0;

如果要定义模板类,则应提供所有成员函数的内联实现。缺少的ctor肯定是一个公认的问题,但在实际使用类时会出现其他问题。此外,还有一些标准容器提供您可能想要实现的功能,最明显的是std::vector

此外,在头文件中使用名称空间是不可取的(或者至少非常不鼓励)
您应该改为使用std::qualification,尤其是您只需要它一次。

让我们分析一下错误消息:

unresolved external symbol "public: __thiscall ArrayList<int>::ArrayList<int>(void)" (??0?$ArrayList@H@@QAE@XZ) referenced in function _main
解决方案是提供构造函数的实现,可能是:

ArrayList() : arr( 0 ), length( 0 ) {}
在班级内部


顺便说一句,请随时查看以下内容以供参考:

  std::array

  std::vector

好的,您已经声明了三个成员函数,定义在哪里?我实际上在.cpp文件中声明了构造函数,但我没有在这里发布它…仍然是相同的错误消息
  ArrayList<int> IntList;
ArrayList() : arr( 0 ), length( 0 ) {}
  std::array

  std::vector