【发布时间】:2013-05-22 12:25:58
【问题描述】:
我有对象总线和汽车的两个向量。我需要创建一个模板来减去使用模板行驶的距离。距离减去只会在相同的对象内完成,如 bus1.dis - bus2.dis。
问题是我不允许使用重载运算符来编码这个模板,我需要使用公共汽车和汽车类的 getDistance(return dist) 方法来进行计算。我不知道怎么做!!!
有人知道如何在模板上使用类方法吗? 我的模板和类对象在不同的标题上。我的模板需要接受任何对象并减去同一对象内的距离。
也许像 T getDistance() - T getDistance() ....
模板.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);
};
汽车.h
class car {
private:
int dist;
public:
int getDist();
void setDist(int);
};
【问题讨论】:
-
发布代码通常比谈论它的作用更好。如果我们看到类的定义,您的问题会更容易理解。
-
Appart 从语法错误(缺少
}),从你给我们的信息看你的函数template<class T> double dist_difference(T x, T y);似乎没问题。 -
不,模板正是我想要的。问题是我什至无法将我的方法放入模板中,例如 x.getDist 不可行。这就是为什么我想知道如何在模板中使用类方法。我想我错过了一些东西,比如将类链接到模板以允许我使用它的功能
-
...@hmjd 也指出,如果您打算将
cars 与buses 进行比较,x和y的类型必须不同。 -
不,我只需要在同一个对象内比较,汽车与汽车和巴士与巴士距离。
标签: c++ templates object vector