Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C++] Problema creazione oggetto usando l' ereditarietą

    Non capisco perchč nel main di questo programma non va bene la creazione dell' oggetto, il compilatore dice che non riesce a convertire.

    codice:
    #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 */

    codice:
    #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;}

    codice:
    #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 */

    codice:
    #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:

    codice:
    #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;
    }

  2. #2
    Non hai incluso cane.hpp.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Non hai incluso cane.hpp.
    Dovrei stare pił attento

    Grazie mille!

  4. #4
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.