エラーの前に期待される修飾されていない-idが:C++:演算子のオーバーロードのエラー: '&' トークン
g++ -Wall -Wextra -ansi -pedantic Testr.cc classE.cc classC.cc
classE.cc:46:14: error: expected unqualified-id before '&'token
classC.cc:46:14: error: expected unqualified-id before '&'token
ラインコンパイラが参照している:コンパイラは話している
classE classE::&operator%(classB &rhs){
" 'classE :: &演算子%'式の「&」;私はすぐにアンパサンドを削除したいと思いますが、割り当て(yay任意の宿題ガイドライン)に必要です。私は、アンパサンドが何をすべきかもはっきりしていません。同様の演算子オーバーロードメソッドは問題なく同じアウトラインを使用し、私はGoogleと教科書を使って空の手を出す。
引数で派生クラス(classB.hが純粋仮想です)を指定しても、これらのエラーはクリアされません。
同様に定義された他の演算子も問題なく動作するため、問題は実装にあると考えられます。基本的な考え方は、2つのclassB由来のオブジェクト(classCまたはclassE)を取り、それぞれのオブジェクトに含まれる文字列変数をインターリーブして、織り込まれた文字列を含むlhsタイプのオブジェクトを返すことです。 classEの実装は、実質的にclassCの実装とまったく同じです。
classC classC::&operator%(classB &rhs){ //Interleave two classB-derived objects, return object of lhs-type
string temp = rhs.str(), temp2 = restore(), result = "";
int a = temp.size(), b = temp2.size(), max;
if (temp2.size() > temp.size()){
max = temp2;
}
else{
max = temp;
}
for (int i = 0; i < max; i++){
if (i < a){
result += temp2[i];
}
if (i < b){
result += temp[i];
}
}
return classC(result);
}
申し訳ありませんが、私はここで全く新しいです。コードブロックに行番号を追加する方法がわかりません= - \
問題を読んでいただきありがとうございます。 = - )
編集:私は恥ずかしい愚かなミスであると恐れていました。行数を classE & classE :: operator%(classB & rhs){ }に変更すると、数多くの新しいエラーが発生しました。 Heh、ちょうど私がC++のハングを取得していると思ったとき。ありがとう、みんな。私はすべての私の将来の質問が簡単であることを願っています。