2017-04-05 29 views
-2

連鎖関数に問題があります。それは必要ではありませんが、なぜ私のコードがエラーを投げているのか理解できません。「式にはクラス型エラーが必要です」連鎖関数の場合のみ発生するC++

クラスを宣言するヘッダファイル:

class twoVar { 
    int a = 0; 
    int b = 0; 

public: 
    twoVar() { 
     a = 0; 
    } 
    int accessA() const; 
    int accessB() const; 
    int mutateA(int &); 
    int mutateB(int &); 
}; 
アクセサとミューテータを定義する

ソースファイル:

int twoVar::accessA() const { 
    return a; 
}  

int twoVar::accessB() const { 
    return b; 
}  

int twoVar::mutateA(int & input) { 
    a = input; 
    return a; 
} 

int twoVar::mutateB(int & input) { 
    b = input; 
    return b; 
} 

ラインメインでそれがエラーを投げています:

int main(int argc, char * argv[]) 
{ 
    int a = 5; 
    int b = 3; 

    m.mutateA(a).mutateB(b); // chained use of mutator functions - error! 
    cout << "m.x = " << m.accessA() << " and m.y = " << m.accessB() << endl; 
    return 0; 
} 

ありがとうございました!

twoVar& mutateA(int &); 
twoVar& mutateB(int &); 

+1

'mutateA'は' int'を返すので、 'int'に' mutateB'を呼び出すことはできません。 – songyuanyao

+0

'm.mutateA(a)'はintを返すので、intには 'mutate()'メソッドがありません。 – Jiahao

答えて

0
int mutateA(int &); 
int mutateB(int &); 

変化これとは実装に対応する変更を行います。

+0

ありがとうございます!コード作成の仕方を学び始めました。 – Harrison

関連する問題