Jump to content
Sign in to follow this  
dmelo

ERRO a compilar, ajuda!

Recommended Posts

dmelo

A minha superclasse é a seguinte:

Medicamento.h

_______________________________

#include "stdafx.h"

#ifndef _Medicamento_H
#define _Medicamento_H


#include <string>
using namespace std;


class Medicamento
{
string d_nome;
float d_preco;
int d_codigo;
string d_lab;
int d_compart;

public:
Medicamento(void);
Medicamento(string const &nome, float preco, int codigo, string const &lab, int compart);
~Medicamento(void);

//Manipuladores
void setNome(string const &nome);
void setPreco(float preco);
void setCodigo(int codigo);
void setLab(string const &lab);
void setCompart(int compart);

//Acessores
string const &nome() const;
float preco() const;
int codigo() const;
string const &lab() const;
int compart() const;
};

#endif

____________________

Medicamento.cpp

____________________

#include "stdafx.h"
#include "Medicamento.h"



//construtores
Medicamento::Medicamento(void){}

Medicamento::Medicamento(string const &nome, float preco, int codigo, string const &lab, int compart)
{d_nome=nome;d_preco=preco;d_codigo=codigo;d_lab=lab;d_compart=compart;}

Medicamento::~Medicamento(void)
{
}

//Manipuladores

void Medicamento::setNome(string const &nome)
{d_nome=nome;}

void Medicamento::setPreco(float preco)
{d_preco=preco;}

void Medicamento::setCodigo(int codigo)
{d_codigo=codigo;}

void Medicamento::setLab(string const &lab)
{d_lab=lab;}

void Medicamento::setCompart(int compart)
{d_compart=compart;}

//Acessores

string const &Medicamento::nome() const
{return d_nome;}

float Medicamento::preco() const
{return d_preco;}

int Medicamento::codigo() const
{return d_codigo;}

string const &Medicamento::lab() const
{return d_lab;}

int Medicamento::compart() const
{return d_compart;}

__________________________________

e depois tenho várias classes descendentes desta, por exemplo:

____________

Xarope.h

____________

#include "stdafx.h"

#ifndef _Xarope_h_
#define _Xarope_h_

#include "Medicamento.h"


class Xarope: public Medicamento //Herança
{
int d_volume;
string d_tipo;

public:
//construtores
Xarope(void):Medicamento(){};
Xarope(string const &nome, float preco, int codigo, string const &lab, int compart,int volume, string const &tipo)
:Medicamento(nome,preco,codigo,lab,compart){};
~Xarope(void);

//manipuladores
void setVolume( int volume);
void setTipo(string const &tipo);

//Acessores
int volume() const;
string const &tipo() const;

};

#endif

__________________

xarope.cpp

___________________

#include "stdafx.h"
#include "Xarope.h"
#include "Medicamento.h"


//construtores


Xarope::Xarope(void):Medicamento(){}

Xarope::Xarope(string const &nome, float preco, int codigo, string const &lab, int compart,int volume, string const &tipo)
:Medicamento(nome,preco,codigo,lab,compart)
{setNome(nome);setPreco(preco);setCodigo(codigo);setLab(lab);setCompart(compart);d_volume=volume;d_tipo=tipo;}

Xarope::~Xarope(void){
}

//Manipuladores

void Xarope::setVolume(int volume)
{d_volume=volume;}

void Xarope::setTipo(string const &tipo)
{d_tipo=tipo;}


//Acessores

int Xarope::volume() const
{return d_volume;}

string const &Xarope::tipo() const
{return d_tipo;}

o problema é o seguinte, eu recebo este erro:

error C2084: function 'Xarope::Xarope(void)' already has a body

: see previous definition of '{ctor}'

: error C2084: function 'Xarope::Xarope(const std::string &,float,int,const std::string &,int,int,const std::string &)' already has a body

: see previous definition of '{ctor}'

para cada uma das classes descendentes, alguma ideia do problema?

Abraço

Share this post


Link to post
Share on other sites
KTachyon

Não estás a inicializar os construtores duas vezes? ;)


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
dmelo

Pois eu acho que o problema é esse, mas não sei como resolver!!!;)

Tenho de os inicializar só no .cpp ou só no .h?

Share this post


Link to post
Share on other sites
KTachyon

É possível em qualquer um, mas o ideal é sempre definires qualquer função no ficheiro .cpp, deixando o .h só com declarações.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.