0

バスと車のオブジェクトの 2 つのベクトルがあります。テンプレートを使用して移動距離を差し引くテンプレートを作成する必要があります。距離マイナスは、bus1.dis - bus2.dis のような同じオブジェクト内でのみ行われます。

問題は、オーバーロード operator- を使用してこのテンプレートをコーディングすることは許可されておらず、計算を行うにはバスと車のクラスから 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;
}

ブッシュ

class bus{

private:
int dist;

public:
int getDist();
void setDist(int);
};

car.h

class car {

private:
int dist;

public:
int getDist();
void setDist(int);
};
4

1 に答える 1

0

あなたはほとんどそこにいました:

car.h

struct Car {
  int 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。コンパイラは、異なる type ごとTに特殊化されたバージョンを導出するため、関数を使用するときにそれを保証します。

于 2013-05-22T13:27:30.387 に答える