-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 &);
に
'mutateA'は' int'を返すので、 'int'に' mutateB'を呼び出すことはできません。 – songyuanyao
'm.mutateA(a)'はintを返すので、intには 'mutate()'メソッドがありません。 – Jiahao