Ir ao conteúdo
  • Cadastre-se

Herança em C++


m4rtins

Posts recomendados

em prog. orientada ao objeto uma subclasse pode ser tratada como a classe mãe certo?

aí eu criei vetor com o método soma e a subclasse força:

class vetor{

private:

float x,y,z;

public:

vetor(void); //construtor não possue tipo

vetor(float, float, float);

void mostrar(void); //mostra na tela

vetor operator+(vetor); //soma vetorial

};

class forca : public vetor{

public:

forca(void) : vetor(){}

forca(float x, float y, float z) : vetor(x, y, z){}

};

vetor vetor::operator+(vetor V){ //sobrecarga de + , vetor T = V+W;

float a,b,c;

a = x + V.x;

b = y + V.y;

c = z + V.z;

return vetor(a,b,c);

}

aí na main eu vou lá e digo:

main(){

forca F1(2,3,4),F2(1,0,1),F3;

F1.mostrar(); //Dá certo

F3 = F1 + F2; //Dá erro

...

}

na minha cabeça, se F1 é forca ele herda o método operator+ de vetor, que opera na classe vetor e deveria funcionar em qualquer subclasse do mesmo.

aparece o seguinte erro:

|81|error: no match for 'operator=' in 'F3 = F1.forca::<anonymous>.vetor::operator+(F2.forca::<anonymous>)'|

|81|note: candidate is:|

23|note: forca& forca::operator=(const forca&)|

23|note: no known conversion for argument 1 from 'vetor' to 'const forca&'|

||=== Build finished: 1 errors, 0 warnings (0 minutes, 0 seconds) ===|

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...