Khi tôi biên dịch mã C++ với GCC 4.3 lần đầu tiên, (sau khi biên dịch thành công mà không có cảnh báo trên 4.1, 4.0, 3.4 với tùy chọn -Wall -Wextra
) một loạt các lỗi của biểu mẫu warning: type qualifiers ignored on function return type
.Cảnh báo gcc phụ: loại vòng loại trên hàm trả về
Cân nhắc temp.cpp
:
class Something
{
public:
const int getConstThing() const {
return _cMyInt;
}
const int getNonconstThing() const {
return _myInt;
}
const int& getConstReference() const {
return _myInt;
}
int& getNonconstReference() {
return _myInt;
}
void setInt(const int newValue) {
_myInt = newValue;
}
Something() : _cMyInt(3) {
_myInt = 2;
}
private:
const int _cMyInt;
int _myInt;
};
Chạy g++ temp.cpp -Wextra -c -o blah.o
:
temp.cpp:4: warning: type qualifiers ignored on function return type
temp.cpp:7: warning: type qualifiers ignored on function return type
Ai đó có thể cho tôi biết những gì tôi đang làm sai mà vi phạm các tiêu chuẩn C++? Tôi cho rằng khi trở về theo giá trị, số const
hàng đầu là thừa, nhưng tôi không hiểu tại sao cần phải tạo cảnh báo với nó. Có những nơi khác mà tôi nên rời khỏi const?
Xem câu hỏi và câu trả lời tương tự này: http://stackoverflow.com/questions/1607188/why-is-type-qualifier-on-return-type-is-meaningless –
Tôi đã thấy cảnh báo như thế này trước đây, tuy nhiên , Tôi đã dành vài phút cố gắng để hiểu những gì đang xảy ra trong mã của tôi. Có lẽ một báo cáo lỗi tốt hơn sẽ tăng tốc mọi thứ. Thay vì 'cảnh báo: loại vòng loại bỏ qua trên hàm trả về loại' giống như' cảnh báo: vui lòng không thêm vòng loại const khi bạn trở lại theo giá trị'. – Avio