首页 > 解决方案 > 如何使用基于模板的类和智能指针?

问题描述

当我尝试构建和编译使用模板类的类时出现链接错误。我正在使用智能指针来创建这个模板类的一个实例。

我尝试从主类而不是模板 T 中删除 int,它似乎有帮助,但不能解决问题。

我的车辆等级 -

#ifndef VEHICLE_H
#define VEHICLE_H

template <class T> 

class Vehicle
{

private:

    T m_x;
    T m_y;

public:


    Vehicle(T x, T y);

    Vehicle();

    ~Vehicle();

    T add();

};

#endif

我的车辆.cpp

#include <iostream>

#include "pch.h"
#include "Vehicle.h"

template <class T>
Vehicle<T>::Vehicle(T x, T y): m_x(x), m_y(y)
{
    std::cout << "Parameterised constructor called" << std::endl;
}

template <class T>

Vehicle<T>::Vehicle()
{
    std::cout << "Calling default constructor" << std::endl;
}
template <class T>
Vehicle<T>::~Vehicle()
{
    std::cout << "Calling destructor" << std::endl;
}

template <class T>

T Vehicle<T>::add()
{
    return m_x + m_y;
}

这是我的主要()

#include <iostream>
#include <memory.h>

#include "Vehicle.h"

int main()
{
    std::cout << "Hello World!\n"; 

    auto vehicle_ptr = std::make_unique<Vehicle<int>>(10,20);
    std::cout << vehicle_ptr->add()<<std::endl;


    return 0;

}

我得到的链接错误,我希望它能够编译和构建。

标签: c++

解决方案


推荐阅读