Этот следующий код (содержащий порочную ошибку) компилируется с GCC без предупреждения. Но, конечно, разработчик (я) не работает должным образом.
#include <iostream>
struct A
{
bool b;
void set(bool b_) { this->b = b_; }
bool get() const { return this-b; } // The bug is here: '-' instead of '->'
};
int main()
{
A a;
a.set(true);
std::cout << a.get() << std::endl; // Print 1
a.set(false);
std::cout << a.get() << std::endl; // Print 1 too...
return 0;
}
Какое предупреждение можно добавить для компилятора (GCC 4.8), чтобы избежать такого типа опечатки?
Связанный вопрос: есть ли возможность принудительно (или предупреждать) доступ к переменным/функциям-членам с помощью this->
?