-8
class A {
    public:
        std::vector<int> & getIds(const int & item) const {
            return ids[item];
        }
    private:
        std::vector<int> * ids;
}

idsが int のベクトルへのポインターである場合、なぜメソッドgetIdsは、隠しベクトルの get 演算子[]をインデックスで使用すると仮定して、なぜ int ではなく int のベクトルへの参照を返すのでしょうか。これを理解していないだけです。

Javaに変換するのを手伝ってくれませんか? マイナスを与えないでください、助けてみてください。

4

3 に答える 3

0

宣言std::vector<int> * ids;は、これが型の単一オブジェクトstd::vector<int>またはその型の配列 (の最初の要素) へのポインターであることを示しています。operator[]メンバー関数で が使用されているという事実は、2 番目が該当することを示しています。

operator[]( のように) ポインターに適用すると、ポインターが指す配列のids[item]要素 (この場合は number の要素) にアクセスしitemます。配列内のオブジェクトの型 ( std::vector<int>) にもoperator[]定義済みがあるという事実は問題ではありません。このコードはそれを呼び出さないためです(このoperator[]ようなオブジェクトは、 のような別のインデックス演算子を追加するids[item][2]か、ポインターを逆参照することで呼び出すことができます)。のように(*ids)[2](これは と同等ですids[0][2])。

于 2013-06-17T20:23:53.173 に答える