簡単にするために、コードの一部を渡すだけです。constベクトル参照のオーバーロード
class A {
public:
std::vector<int> & get(){ return myVector;}
const std::vector<int> & get() const {return myVector;}
private:
std::vector<int> myVector;
}
私の質問は、どのようにオーバーロードされたconst getメソッドを関与させるかです。 const_iteratorとデバッグコードを作成しようとすると、非constメソッドが含まれます。
int constVector(const std::vector<int> &constVector)
{
return constVector[0];
}
int b = constVector(myA.get()); // it involves non-const method
は何ですか: はそれが私は、次のスニペット
A myA;
myA.get().push_back(1);
for (const auto& v: myA.get()) { } // it involve not const get method
または
std::vector<int>::const_iterator cit = myA.get().begin()
//it involves not const method
または
const std::vector<int> v = myA.get();
// involves non-const method
かさえ私が作成した関数を使用してどのように動作するかを理解したいですpuもしそれらが関与していなければ、オーバーロードされたconstメソッドの呼び出し。
私は間違って何をしていますか、どのように私はconstメソッドを含むことができます。 myA
ので
constへの参照がconst *の場合、constメソッドが呼び出されます。 –