PDA

Visualizza la versione completa : [C++] Problema creazione oggetto usando l' ereditarietą


Darčios89
02-01-2012, 23:04
Non capisco perchč nel main di questo programma non va bene la creazione dell' oggetto, il compilatore dice che non riesce a convertire.


#ifndef ANIMALE_HPP
#define ANIMALE_HPP
#include <string>

using namespace std;

class Animale
{

protected:

string specie;
string nome;
int anni;

public:
// Animale(string nome);
Animale(string nome, int anni);
Animale(string nome);
~Animale();

void setanni(int anni);
void setnome(string n);
void setspecie(string s);
int getanni();
string getnome();
string getspecie();
};



#endif /* ANIMALE_HPP */




#include "Animale.hpp"

Animale:: Animale(string n)
{
nome=n;
}

Animale::Animale(string n, int a)
{
nome=n;
anni=a;
}

Animale::~Animale()
{
specie="";
nome="";
anni=-1;
}

void Animale::setanni(int a){anni=a;}
void Animale::setnome(string n){nome=n;}
void Animale:: setspecie(string s){specie=s;}
int Animale::getanni(){return anni;}
string Animale::getnome(){return nome;}
string Animale::getspecie(){return specie;}




#ifndef CANE_HPP
#define CANE_HPP

#include "Animale.hpp"

class Cane :public Animale
{
protected:
string specie;
string nome;
int anni;

public:
Cane(string nome, int anni);
Cane(string nome);
~Cane();

void setanni(int a);
void setnome(string n);
void setspecie(string s);
int getanni();
string getnome();
string getspecie();


};

#endif /* CANE_HPP */




#include "Cane.hpp"

Cane::Cane(string name, int age):Animale(name, age)
{
anni=age;
nome=name;

}

Cane::Cane(string nome):Animale(nome)
{
nome=nome;
}

Cane::~Cane()
{
specie="";
nome="";
anni=-1;
}

void Cane::setanni(int a){anni=a;}
void Cane::setnome(string n){nome=n;}
void Cane:: setspecie(string s){specie=s;}
int Cane::getanni(){return anni;}
string Cane::getnome(){return nome;}
string Cane::getspecie(){return specie;}



E il main:


#include <cstdlib>
#include "Animale.hpp"
#include <stdio.h>
#include <iostream>

using namespace std;

/*
*
*/
int main() {

string nome="Scheggia";
int anni=7;
Animale * a=new Cane(nome, anni); //errore cannot convert int* to Animale.


cout << "Il cane si chiama " <<a->getnome()<<"." <<endl;
cout <<"Il cane ha " <<a->getanni()<<" anni." <<endl;




return 0;
}

MItaly
02-01-2012, 23:08
Non hai incluso cane.hpp.

Darčios89
02-01-2012, 23:16
Non hai incluso cane.hpp.

Dovrei stare pił attento :facepalm:

Grazie mille!

MItaly
02-01-2012, 23:20
:ciauz:

Loading