class Foo {
protected:
QPoint& bar() const;
private:
QPoint m_bar;
};
QPoint& Foo::bar() const {
return m_bar;
}
Tôi đã nhận lỗi này:Làm cách nào để trả lại tài liệu tham khảo cho thành viên lớp học đúng cách?
lỗi: khởi tạo không hợp lệ của tài liệu tham khảo của loại 'QPoint &' từ biểu hiện của loại 'const QPoint'
Tuy nhiên nó hoạt động nếu tôi thay đổi nó như thế này:
QPoint& Foo::bar() const {
return (QPoint&) m_bar;
}
1) Tôi không hiểu tại sao trình biên dịch lại nói rằng QPoint của tôi là const.
2) Có được phép bỏ dàn diễn viên ở đó không?
Cảm ơn bạn. Tôi nghĩ rằng const chức năng vòng loại đã có nghĩa là để chỉ đảm bảo rằng các chức năng chính nó sẽ không sửa đổi các đối tượng. Tôi muốn m_bar có thể sửa đổi được nên tôi đã xóa vòng loại. – Dimitris
Thực ra nó ngăn không cho chức năng sửa đổi đối tượng, nhưng nó làm như vậy bằng cách chỉ đưa một đối tượng const cho hàm. Tuy nhiên, hàm đó không thể đưa ra một tham chiếu không const là nhiều hơn một tác dụng phụ ngẫu nhiên: Bạn không nên lấy các tham chiếu không const cho một đối tượng không đổi theo bất kỳ cách nào. – sbi