Ir ao conteúdo
  • Cadastre-se
m4rtins

Herança em C++

Recommended Posts

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) ===|

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×