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.
}

questionAnswers(6)

yourAnswerToTheQuestion