Aviso sobre como ocultar variáveis de membro?
O seguinte trecho de código tem um vazamento de memória que passei muito tempo perseguindo. O problema é que, dentro de Foo (), a variável local x_ oculta a variável de membro x_. Também é muito chato, porque o compilador poderia ter me avisado sobre isso. Existe um sinalizador no GCC para esse aviso? (Para os curiosos: cheguei ao código de buggy primeiro usando uma variável local e depois alterando-a para uma variável membro, mas esquecendo de remover a declaração de tipo.)
struct A {
A() x_(NULL) {}
~A() {
delete x_;
}
void Foo() {
HugeThingy* x_ = new HugeThingy();
x_->Bar("I. Need. Garbage. Collection. Now.");
}
HugeThingy* x_;
DISALLOW_COPY_AND_ASSIGN(A); // Macro to prevent copy/assign.
}