Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C++] classi

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    15

    [C++] classi

    Salve a tutti, ho bisogno di un aiuto.
    Ho due classi: la classe Parola e la classe Dizionario che dovrà contenere vari oggetti di tipo Parola.

    Nella classe Parola non ho nessun problema.
    codice:
    //parola.h
    #include <stdio.h>
    #include <stdlib.h>
    
    #define L_WORD 20
    
    class Parola{
          public:
                 int tipo;
                 char nome[L_WORD];
                 
                 Parola(char nomes[L_WORD], int type);
                 void set_word(char nome[L_WORD]);
                 void set_type(int type);
                 char get_word();
                 int get_type();
          private:
          };
    
    //parola.cpp
    #include <stdio.h>
    #include <stdlib.h>
    #include "parola.h"
    
    Parola::Parola(char nomes[L_WORD], int type){
         for(int i = 0; i< L_WORD; i++){
                 nome[i] = nomes[i];
                 }
         tipo = type;
         }
    void Parola::set_word(char nomes[L_WORD]){
         for(int i = 0; i< L_WORD; i++){
                 nome[i] = nomes[i];
                 }
    }
    
    void Parola::set_type(int type){
         tipo = type;
    }
    
    char Parola::get_word(){
         return nome[L_WORD];
         }
    
    int Parola::get_type(){
        return tipo;
    }
    E questa è la classe Dizionario (da finire)

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    #include "parola.h"
    #define DIZ_MAX 256
    
    class Dizionario{
          public:
                 Parola *parola[DIZ_MAX];
                 
                 Dizionario();
                 void set_parola();
                 Parola get_parola();
          private:
          };       
    
    //dizionario.cpp
    #include <stdio.h>
    #include <stdlib.h>
    #include "dizionario.h"
    
    Dizionario::Dizionario(){}
    
    Dizionario::set_parola(){
                             char nome[L_WORD];
                             gets(nome);
                             int type;
                             scanf("%d",type);
                             parola[0].set_word(nome);
                             parola[0].set_type(type);
                             printf("La parola e': \n%s\n%s(tipo)\n",parola[0].get_word(),parola[0].get_type());
                             }
    Ora Dev-C++ mi riporta questi problemi:
    codice:
    7 C:\Users\Valerio\Desktop\IA\dizionario.cpp ISO C++ forbids declaration of `set_parola' with no type 
    7 C:\Users\Valerio\Desktop\IA\dizionario.cpp prototype for `int Dizionario::set_parola()' does not match any in class `Dizionario' 
    12 C:\Users\Valerio\Desktop\IA\dizionario.h void Dizionario::set_parola() 
    7 C:\Users\Valerio\Desktop\IA\dizionario.cpp `int Dizionario::set_parola()' and `void Dizionario::set_parola()' cannot be overloaded 
     C:\Users\Valerio\Desktop\IA\dizionario.cpp In member function `int Dizionario::set_parola()': 
    12 C:\Users\Valerio\Desktop\IA\dizionario.cpp `set_word' has not been declared 
    12 C:\Users\Valerio\Desktop\IA\dizionario.cpp request for member of non-aggregate type before '(' token 
    13 C:\Users\Valerio\Desktop\IA\dizionario.cpp `set_type' has not been declared 
    13 C:\Users\Valerio\Desktop\IA\dizionario.cpp request for member of non-aggregate type before '(' token 
    14 C:\Users\Valerio\Desktop\IA\dizionario.cpp `get_word' has not been declared 
    14 C:\Users\Valerio\Desktop\IA\dizionario.cpp request for member of non-aggregate type before '(' token 
    14 C:\Users\Valerio\Desktop\IA\dizionario.cpp `get_type' has not been declared 
    14 C:\Users\Valerio\Desktop\IA\dizionario.cpp request for member of non-aggregate type before '(' token 
     C:\Users\Valerio\Desktop\IA\Makefile.win [Build Error]  [dizionario.o] Error 1
    Naturalmente il problema principale è l'uso della classe Parola nella classe Dizionario giusto? quindi... come posso sistemare il tutto? un aiutino?

  2. #2

    Re: [C++] classi

    Originariamente inviato da Ethoel
    codice:
    Dizionario::set_parola(){
                             char nome[L_WORD];
                             gets(nome);
                             int type;
                             scanf("%d",type);
                             parola[0].set_word(nome);
                             parola[0].set_type(type);
                             printf("La parola e': \n%s\n%s(tipo)\n",parola[0].get_word(),parola[0].get_type());
                             }
    Ora Dev-C++ mi riporta questi problemi:
    codice:
    7 C:\Users\Valerio\Desktop\IA\dizionario.cpp ISO C++ forbids declaration of `set_parola' with no type 
    7 C:\Users\Valerio\Desktop\IA\dizionario.cpp prototype for `int Dizionario::set_parola()' does not match any in class `Dizionario' 
    12 C:\Users\Valerio\Desktop\IA\dizionario.h void Dizionario::set_parola() 
    7 C:\Users\Valerio\Desktop\IA\dizionario.cpp `int Dizionario::set_parola()' and `void Dizionario::set_parola()' cannot be overloaded
    come posso sistemare il tutto? un aiutino?
    te lo dice il compilatore cosa devi fare:
    codice:
    void Dizionario::set_parola(){
                             char nome[L_WORD];
                             gets(nome);
                             int type;
                             scanf("%d",type);
                             parola[0].set_word(nome);
                             parola[0].set_type(type);
                             printf("La parola e': \n%s\n%s(tipo)\n",parola[0].get_word(),parola[0].get_type());
                             }

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    15
    Oddio... il caffè non mi è tanto utile la mattina.... O.o

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    15
    Mi dà errore:

    parola[0].set_word(nome);
    parola[0].set_type(type);
    printf("La parola e': \n%s\n%s(tipo)\n",parola[0].get_word(),parola[0].get_type());

    Dice che set_word e set_type non sono stati dichiarati...

  5. #5

    Re: [C++] classi

    Originariamente inviato da Ethoel
    codice:
    ...
    class Dizionario{
          public:
                 Parola *parola[DIZ_MAX];
     ...
          };
    ...
                            parola[0].set_word(nome);
    "parola" è un array di puntatori a "Parola". Quindi:
    codice:
                            parola[0]->set_word(nome);

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.