我有两个物体公共汽车和汽车矢量。我需要创建一个模板来减去使用模板行进的距离。距离减去只能在bus1.dis - bus2.dis之类的相同对象中完成。
事情是我不允许使用重载操作符来编码这个模板,我需要使用来自总线和汽车类的getDistance(return dist)方法来进行计算。我不知道怎么样!!!
任何人都知道如何使用类方法在模板上使用? 我的模板和类对象位于不同的标题上。我的模板需要接收任何对象并减去同一对象内的距离。
可能像T getDistance() - T getDistance()....
templates.h
template <class T>
double dist_difference(T x,T y) {
double distance = x.getDist() - y.getDist();
return distance;
}
bus.h
class bus{
private:
int dist;
public:
int getDist();
void setDist(int);
};
car.h
class car {
private:
int dist;
public:
int getDist();
void setDist(int);
};
答案 0 :(得分:0)
你快到了那里:
car.h
struct Car {
int dist;
};
dist.h
template<class T>
int distDiff(T x, T y) {
return x.dist - y.dist;
}
的main.cpp
#include "car.h"
#include "dist.h"
#include <iostream>
int main(int argc, char* argv[]) {
Car a;
a.dist = 10;
Car b;
b.dist = 5;
int dist = distDiff(a, b);
std::cout << dist << std::endl;
}
输出:
5
类型T
可以是定义属性dist
的任何类型。编译器在您使用该函数时会确保它,因为对于每个不同的类型T
,它会派生出一个专门的版本。