Tôi có chức năng chấp nhận tham chiếu const làm đối số. Nó không nên thay đổi đối số, nhưng nó (biến "_isVertex"). Làm thế nào để sửa cái này? Đây là mã:Chức năng thay đổi đối tượng 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]);
}
Cộng một: bạn đã có tôi. Lưu ý rằng các thùng chứa thư viện chuẩn C++ không được thiết kế để là các lớp cơ sở. – Bathsheba
'const' ở cuối khai báo hàm chỉ đảm bảo rằng trạng thái của lớp sẽ không thay đổi do gọi hàm. Giá trị trả về không phải là const, và có thể được thay đổi sau khi thực tế. –