模板并使用类对象函数来计算

时间:2013-05-22 12:25:59

标签: c++ templates object vector

我有两个物体公共汽车和汽车矢量。我需要创建一个模板来减去使用模板行进的距离。距离减去只能在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);
};

1 个答案:

答案 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,它会派生出一个专门的版本。