Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    10

    [c++] prototipo nelle classi

    Ciao a tutti!
    mi sto esercitando in alcune esercitazioni sulle classi perchè tra 15 giorni ho un esame!

    ora ho creato il file d'intestazione (.h) e compila correttamente, mente il cpp mi da dei problemi.

    cinema.h

    codice:
    #include <ostream>
    #include <cstring>
    
    using namespace std;
    
    class Cinema {
        char* nomecinema[31];
        int F;
        int C;
        bool* c;
        
        public:
        Cinema(int,int,char*);
        bool prenota(char,int);
        bool cancella(char,int);
        
        friend ostream & operator<<( ostream &, const Cinema &);
        
        int operator!() const;
        Cinema& operator=(const Cinema&);
        Cinema& operator+=(const int);
        ~Cinema(){delete []c;}
    };
    cinema.cpp

    codice:
    #include "cinema.h"
    #include <iostream>
    
    
     Cinema::Cinema(int n, int p, const char*nome){
         if (n<=0|| n>26)
            { n=26;}
        if (p<=0|| p>9)
            {p=9;}
        if( strlen(nome)> 30)
        {strcpy(nome, "nomeacaso");}
            else 
            {
            strcpy(nomecinema, nome);
            }
        c=new bool[n*p];
        for (int i=0; i<n*p; i++)
            {c[i]=false;}    //creo  una matrice booleana
                    // di n file e p posti vuota.
    }
    il compilatore mi da il seguente errore:

    cinema.cpp:5:2: error: prototype for ‘Cinema::Cinema(int, int, const char*)’ does not match any in class ‘Cinema’
    cinema.h:6:7: error: candidates are: Cinema::Cinema(const Cinema&)
    cinema.h:13:2: error: Cinema::Cinema(int, int, char*)

    avete qualche idea de perchè? in poche parole mi sta dicendo che non trova il costruttore nel file.h!! come mai? la sintassi è giusta!

    grazie in anticipo per l'aiuto!
    Ultima modifica di Tuono94; 10-02-2014 a 18:12

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    la sintassi è giusta!
    Controlla meglio. Dichiarazione e definizione differiscono di un const.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    10
    ecco...me l'immaginavo di aver fatto una stupidata del genere!
    ora comunque mi dice

    cinema.cpp: In constructor ‘Cinema::Cinema(int, int, char*)’:
    cinema.cpp:16:26: error: cannot convert ‘char**’ to ‘char*’ for argument ‘1’ to ‘char* strcpy(char*, const char*)’


    che problema c'è in questo strcpy? premetto che è solo un controllo e il testo non lo chiedeva esplecitamente ma comunque ho preferito metterlo!

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    10
    ho gia risolto grazie! ho levato nel file .h

    codice:
    class Cinema {
        char* nomecinema[31];
    con
    codice:
    const int MAX =30;
    class Cinema {
        char nomecinema[MAX];

    funziona ma non so perchè prima non lo accettasse... cos'è cambiato nel mettere nomecinema[30] a metterlo con un const int?

    [/CODE]

  5. #5
    Quote Originariamente inviata da Tuono94 Visualizza il messaggio
    ho gia risolto grazie! ho levato nel file .h

    codice:
    class Cinema {
        char* nomecinema[31];
    con
    codice:
    const int MAX =30;
    class Cinema {
        char nomecinema[MAX];

    funziona ma non so perchè prima non lo accettasse... cos'è cambiato nel mettere nomecinema[30] a metterlo con un const int?

    [/CODE]
    Prima era un array di "char*", adesso un array di "char".

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 © 2024 vBulletin Solutions, Inc. All rights reserved.