Pergunta

Quando você tem uma classe derivada, existe uma maneira mais simples para se referir a uma variável de um método diferente:

BaseClass::variable

Editar
Por acaso, eu encontrei uma página que explica esta questão usando funções em vez disso: Erros Template-Classes-Derived. Aparentemente, ele faz a diferença quando usando classes modelos.

Foi útil?

Solução

Se a variável de membro da classe base é protegido ou público do que você pode apenas se referem a ele pelo nome, em qualquer função de membro da classe derivada. Se é privado para a classe base o compilador não vai deixar o acesso classe derivada-lo em tudo. Exemplo:


class Base
{
protected:
  int a;

private:
  int b;
};

class Derived : public Base
{
  void foo()
  {
    a = 5;  // works
    b = 10; // error!
  }
};

Há também algo a ser dito para manter todas as variáveis ??de membro privado e fornecendo getters e setters, conforme necessário.

Além disso, cuidado de membros de dados "esconder":


class Base
{
public:
  int a;
};

class Derived : public Base
{
public:
  int a;
};

Isto irá criar duas variáveis ??a chamado: um em Base, um em Derived, e ele provavelmente vai levar a confusão e erros.

Outras dicas

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top