HavoC
Power Member
Boas
O método obtemDepartamento so faz sentido na classe director, logo so deve estar definido e declarado nesta.
Em relação ao problema, portanto tens um pointer para Pessoa que é a classe mais genérica, mas como tens necessidade de utilizar metodos especificos de uma classe que desta deriva, não tens acesso. Para resolver esse problema, tens de realizar conversões entre apontadores, ou seja, converter o pointer para pessoa num pointer para director. Pesquisa por dynamic_cast.
Ao efectuares um dynamic cast sobre um pointer, se os tipos forem compativeis, devolve um pointer para o objecto. Caso contrário, um pointer para null. Assim podes testar se a conversão foi possivel. Outra coisa, não precisas desses testes todos (essa especie de switch case) na função guardaDados() podes criar um método que recebe um ostream& e insere neste os dados relativos á instância dessa classe. Por outras palavras usa o polimorfismo .Fica bem.
O método obtemDepartamento so faz sentido na classe director, logo so deve estar definido e declarado nesta.
Em relação ao problema, portanto tens um pointer para Pessoa que é a classe mais genérica, mas como tens necessidade de utilizar metodos especificos de uma classe que desta deriva, não tens acesso. Para resolver esse problema, tens de realizar conversões entre apontadores, ou seja, converter o pointer para pessoa num pointer para director. Pesquisa por dynamic_cast.
Ao efectuares um dynamic cast sobre um pointer, se os tipos forem compativeis, devolve um pointer para o objecto. Caso contrário, um pointer para null. Assim podes testar se a conversão foi possivel. Outra coisa, não precisas desses testes todos (essa especie de switch case) na função guardaDados() podes criar um método que recebe um ostream& e insere neste os dados relativos á instância dessa classe. Por outras palavras usa o polimorfismo .Fica bem.
Última edição: