Existe uma maneira fácil de usar variáveis ??de uma classe base?
-
04-07-2019 - |
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.
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
relacionadas: Usando “super” em C ++