角括弧は演算子ではないので、私はなぜこのメッセージを受け取っているのか完全には分かりませんが、ここに行きます。演算子[]の一致がありません。C++
私のIntSet.h
ファイルで、私はこのような特定の関数を宣言しました。
IntSet unions(const IntSet& operand)const;
ファイルはIntSet
によって呼び出され、引数として別のIntSet
を取り、2セットの和集合を返します。
私のIntSet.cpp
ファイルには、このように見えます。
IntSet IntSet::unions(const IntSet& operand) const
{
IntSet returnSet(50);
for (int i = 0; i < 50; i++){
if (setArray[i] == 1 || operand[i]==1){
if(setArray[i] == 1){
returnSet.addElement(setArray[i]);
}
else if(operand[i] == 1){
returnSet.addElement(operand[i]);
}
}
}
return returnSet;
}
エラーはoperand[I] == 1
から発生しています。
IntSet.cpp|52|error: no match for 'operator[]' (operand types are 'const IntSet' and 'int')
。
プログラムは、オーバーライドしてはいけません。私はIntSet unions(const IntSet& operand)const;
が提供されたことにも言及しなければならず、変更することもできません。
どのように私はこれを解決する必要がありますか?
std :: setにはconst operator [] overload:user .at()関数がありません。 – zapredelom
IntSet :: operator []は、 'operator []'を呼び出すためにオーバーロードする必要があります。 – songyuanyao
オペレータのオーバーロードはどの形式でも許可されていません。また、クラスメソッドの宣言やパラメータを変更することもできません。 – Podo