2017-06-03 8 views
1

私はC++の初心者ですので、質問をより詳細にする方法がわかりません。ごめんなさい。 だから私の教授は私にこのヘッダファイルを与え、関数定義を書くために私に言った:このクラスのこの関数はどのように記述しますか?

class Move 
    { private: 
    double x; 
    double y; 
    public: 
    Move(double a = 0, double b = 0); // sets x_, y_ to a, b 

    void showmove(Move number) const; // shows current x_, y_ values 

    // add : Move --> Move 
    // to add x_ of input object to x_ of invoking object to get new x_, 
    // to add y_ of input object to y_ of invoking object to get new y_, 
    // to create new object initialized to new values and return it 
    Move add(const Move &m) const; 

    void reset(double a = 0, double b = 0); // resets x, y to a, b 
    }; 

私は移動は(constの移動&メートル)のconstを追加する機能を理解していません。。通常、add関数は次のようになります。int add(int a、int b)。したがって、2つの入力を組み合わせて1つの出力を作ります。しかし、Move add機能には1つの入力しかありません。私はそれのための定義を書く方法を知らない。私は友人に尋ねたところ、A.add(B)のようなものを思いついたのですが、それが意味をなさないかどうかわかりません。 は定義が

Move add(const Move& m) { 
    return Move(this->x+m.x, this->y+m.y); 
} 

でなければなりませんそれは代わりに一つだけのパラメータ(移動オブジェクトへの参照)と直接の結果を得るために、メートルの属性を使用したい読み、私の英語のため申し訳ありません

答えて

0

いただき、ありがとうございます2つ(座標)。

実際、この方法で呼び出すこと:@:

Move A/*sthg*/; 
Move B/*sthg*/; 
Move C = A.add(B); 
+0

を' S(二重、二重) '取るコンストラクタ'そのパラメータとして、tは未定義参照することがあり' shouldn。 "外部定義"(宣言のヘッダー、定義のためのcpp)を使用する場合は、次のように(定義のところで)クラスを参照する必要があります: 'Move Move :: add/* etc ... * /' – Vivick

関連する問題