c++ - 如何使用基于模板的类和智能指针?
问题描述
当我尝试构建和编译使用模板类的类时出现链接错误。我正在使用智能指针来创建这个模板类的一个实例。
我尝试从主类而不是模板 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;
}
我得到的链接错误,我希望它能够编译和构建。
解决方案
推荐阅读
- swift - 在大型 Swift 代码库中用“.do(onComplete: {})”系统地替换“.doOnComplete {}”的最简单方法是什么?
- jenkins-pipeline - 是否可以在 Jenkins 声明性管道中按分支设置代理
- c++ - 在多级复合关系中访问基类成员
- ios - 0auth2 与 Microsoft 的重定向问题
- c - 使用选定的 main() 参数在 bash 中运行程序
- javascript - 除非有虚拟回声语句,否则不会调用 Sweet Alert
- php - 如何将十六进制转换为二进制值
- java - 我可以说浏览器或其他东西阻止了百里香嵌套循环吗?
- bash - bash 脚本。有没有办法缩短我的代码?
- java - mkdir() 解压时未创建所需目录