C++ 3D矢量模板

Dan*_*nny 2 c++ templates vector

我正在尝试使用模板创建一个Vector类来存储对象的3D位置.我创建了这个类,但是我一直收到错误LNK2019:函数_main中引用的未解析的外部符号"public:__thiscall Vector3 :: ~Vector3(void)"(?? 1?$ Vector3 @ H @@ QAE @ XZ)

这与我在main函数中创建Vector有关,但我无法弄清楚它有什么问题...这是我的代码:

//Vector3.h
template <typename T>
class Vector3
{
public:
    Vector3(T elemOne, T elemTwo, T elemThree);
    ~Vector3();

    void display();

protected:
    T x;
    T y;
    T z;
};

//Vector3.cpp Constructor.
#include"Vector3.h"

template<typename T>
Vector3<T>::Vector3(T elemOne, T elemTwo, T elemThree)
{
    x = elemOne;
    y = elemTwo;
    z = elemThree;
}

template<typename T>
Vector3<T>::~Vector3()
{

}

template<typename T>
void Vector3<T>::display()
{
    cout << "X: " << x << endl;
    cout << "Y: " << y << endl;
    cout << "Z: " << z << endl;
}

//MainFrame.cpp
int main()
{
    Vector3<int> vec(10, 20, 30);

    cout << "Press any key to continue..." << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

任何有关发现此问题的帮助将不胜感激.谢谢

Dar*_*con 7

模板需要在使用它们的同一编译单元中定义.您不能像在代码中显示的那样将模板的实现放在不同的文件中.

我还要注意,现在看来,你不需要析构函数.您没有在其中执行任何操作并且它不是虚拟的,因此可以省略它以允许编译器为您生成一个.