引数としてconst参照を受け付ける関数を持っています。それは引数を変更するべきではありませんが、それは行います(変数 "_isVertex")。どのようにこれを修正することができますか?コードは次のとおりです。関数の変更constオブジェクト
#include <vector>
#include <iostream>
using namespace std;
class Element
{
public:
bool isVertex() const
{ return _isVertex; };
private:
bool _isVertex = true;
};
class ElementContainer : public vector <Element>
{
public:
void push(const Element &t)
{
// here everything is fine
cerr << t.isVertex() << ' ';
push_back(t);
// and here _isVertex is false, should be true!
cerr << t.isVertex() << '\n';
}
};
int main()
{
ElementContainer vertex;
vertex.push({});
vertex.push(vertex[0]);
}
プラス1つ:あなたは私を持っています。 C++の標準ライブラリコンテナは基本クラスではないことに注意してください。 – Bathsheba
関数宣言の最後の 'const'は、関数の呼び出しの結果としてクラスの状態が変化しないことを保証します。返される値はconstではなく、事実の後で変更することができます。 –