2016-04-11 2 views
-2

私は2つの変数を比較しようとしていますが、これらの変数の型は "時間"です。私はこれらの== /!=関数を使用するように見えることはできません。C++は変数をオブジェクトとして比較します

#include<iostream> 
#include "Stock.h" 

using namespace std; 

void Stock::setShares(int d, int m, int y, int h, int mts, double p, int vol, double val) 
{ 
    date.setDate(d, m, y); 
    time.setTime(h, mts); 
    price = p; 
    value = val; 
    volume = vol; 
} 

Date Stock::getDate() const 
{ 
    return date; 
} 

Time Stock::getTime() const 
{ 
    return time; 
} 

これが私のメインプログラムである:

Time t1, t2; 
for (int i = 1; i < counter; ++i) 
     { 
      if (V1.at(i).getPrice() == highestPrice) 
      { 
       time2 = V1.at(i).getTime; 
       if (time2 != time1) 
       { 
        cout << time2; 
       } 
      } 
     } 

は、どのように私は時間1 & TIME2を比較することができますか?私は自分のプログラムで時間の重複値を表示しないようにしています。 V1はStockオブジェクトからのデータがロードされたベクトルです。

+2

* '*'は何ですか?クラスの '=='演算子のオーバーロード(http://en.cppreference.com/w/cpp/language/operators)(または '!='演算子)を試しましたか? –

+0

Time.hは時間、分などを初期化する別のクラスです –

+0

'time2 = V1.at(i).getTime;'これはコンパイルされますか? – Ajay

答えて

2

==または!=演算子がタイプTimeでオーバーロードされているかどうかを最初に確認します。ユーザー定義型のコードで使用する演算子に独自の意味を与える必要があります。そうしないと、コンパイラー・エラーが発生します。以下のような

何か、

class Time 
{ 
public: 
     bool operator==(Time const & t1) const 
     { 
     return this.hour == t1.hour && this.min==t1.min; 

     } 
private: 
    int min; 
    int hour; 
}; 
+3

なぜ単に 'return hour == t1.hour && min == t1.min'をしないのですか?三項表現の必要はありません。 –

+0

ありがとう、これでした。 –

+0

@GautamNath不等号演算子 '!='の場合、完全な論理を実装する必要はありません。論理式演算子 '!'と組み合わせた等価演算子を 'return!(* ​​this == theOtherObject ) '。上記のような簡単なことは本当に重要ではありませんが、より複雑な比較ロジックを持つオブジェクトでは、等価演算子を再利用することで簡単になります。 –

0

完全にあなたの質問に答えることができるようにするためには、タイプ「時間」の詳細を知ることが必要であろう。 2つのオブジェクトを比較することについて話しているので、それがクラスであると仮定しよう。それは、このような単純なクラスだった場合

:あなたが直接オブジェクトを比較したい場合は、あなたが必要な演算子をオーバーロードする必要が

if(t1.getValue() == t2.getValue()) 

class Time { 
    public: 
     int getValue(); 
     void setValue(int value); 
    private: 
     int value; 
} 

あなたはgetValueメソッドを使用する必要があります:

bool operator==(const Time& anotherTime) const { 
    return (anotherTime.getValue()==this->getValue()); 
} 
+1

'if'の必要はなく、' return getValue()== anotherTime.getValue() 'だけで十分です。 –

+0

True;)それを修正しました。 – diidu

関連する問題