0

私には2つのクラスがあり、1つはAと呼ばれ、もう1つはBと呼ばれます。

クラス B には、タイプ A の要素のベクトルがあります。これを vectorofAs と呼びましょう。

A へのポインタを返す関数を B に書いています。この A はベクトルの要素です。

ここに関数があります

A* B::function() const {
 *do something to find the needed element index i*
 return &vectorofAs[i];
}

これはベクトルの i 番目の要素のアドレスを返すべきではありませんか? インテリセンスは「エラー: 戻り値の型が関数の型と一致しません」と言う

4

2 に答える 2

4

あなたは指定しませんでしたが、私は仮定しています:vectorOfAsは、タイプ のクラス B のメンバーとして定義されていstd::vector<A>ます。

その場合、問題はあなたfunctionが定義されていることです。constつまり、インスタンスのすべてのメンバーBもこの関数内で const です。つまり、あなたvectorOfAsconst std::vector<A>. つまり、の型は&vectorOfAs[i]、関数が返すものとは異なりますA const *A *

次の 2 つのオプションがあります。

  1. 関数の戻り値の型を次のように変更しますA const *
  2. 関数を非定数にします。
于 2013-03-13T14:47:31.053 に答える
0

関数をconstとしてマークしました。

つまり、vectorofAsは、になり、aとthis同じではありません。const B*const vector<A>vectorofAs[i]const A&&vectorofAs[i]const A*A*

したがって、constを前に置くか、最後にあるconstを削除します

于 2013-03-13T14:45:42.800 に答える