私はベクトルとこのようなベクトルへのポインタを返す関数を含むクラスAを持っています。C++のvector []演算子がat()の実行中にエラーをスローする
std::vector<ALuint> * SoundComponent::getSource()
{
return &m_Sources;
}
私はgetSource()
関数を呼び出すことにより、クラスAのベクトルの値を変更する必要が別のクラスBを持っています。だから私はこれを行うことによってベクトルへのポインタを取得します。
std::vector<ALuint> * sources = m_pSoundComponent[i]->getSource();
そしてm_pSoundComponent
今s say for example I want to add 1 to the entries in the vector. For some reason
演算子[] gives me an error but
at`だけで正常に動作させ、クラスAの配列です。だから、私が試した3つのことがあり、そのうち2つは機能しますが、最初のものが間違っている理由を知りたいのです。
sources[0] += 1; //Does not work
sources[0][0] += 1; //Works ? Not sure why it became a 2D vector.
sources->at(0) += 1; //works
私はat()
rはoperator []
よりもはるかに遅いので、私はoperator []
を使用しようとしていますが、それは今の2Dベクトルである理由私はわからないことを聞きました。
また、クラスAでは、sources[0]
をエラーなしで使用することができますが、sources[0][0]
でエラーが表示されます。
'sources'はポインタであり、ベクトルではありません。 – juanchopanza
*参考文献*を適切に教える優れたC++教師/レッスンを見つける必要があります。 – Xirema
これを '(* sources)[0]'に変更してください。 – Logman