自定义向量类C++

use*_*357 1 c++ class vector

我正在制作自己的矢量类.

.H:

template<typename T>
class MyVector
{
private:
    T *elements;
    int elementCount;
public:
    MyVector();
    MyVector(int size);
    void push_back(T value);
    void pop_back();
    int size();
    T at(int index);
    bool empty();
    void clear();
    void swap(MyVector v2);
};
Run Code Online (Sandbox Code Playgroud)

的.cpp:

template<typename T>
MyVector<T>::MyVector()
{
    elementCount = 0;
    elements = new int[elementCount];
    elements = (int *) realloc (elements, elementCount * sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)

main.cpp中:

#include "MyVector.h"

int main()
{
    MyVector<char> myTestVector;   
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在尝试简单地创建一个MyVector对象时遇到错误,错误是:

MyVector :: MyVector(),引自:main.o中的_main ld:未找到架构x86_64 clang的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)

我最初编写的类使用已经指定的类型,现在我需要它来处理任何给定的类型.

为什么我收到此错误?提前致谢!

小智 5

C++模板必须在头文件中定义它们.这是因为编译器在编译时为每个实例类型生成目标文件.如果将声明移动到.h文件,则代码应链接正常.

请参阅此处,了解模板的工作方式/原因.