Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    112

    [c/c++] funzioni nelle classi

    ciao

    ho scritto questo piccolo codice per estrarre delle carte in modo random, e uso le classi appena imparate, cosa sbaglio?

    #include <iostream>
    #include <cstdlib>
    using namespace std;

    class mazzo {
    public:
    int n;
    char m;
    int randomn() {
    n=1+rand()%10;
    return n;
    }
    char randomm() {
    m=1+rand()%4;
    return m;
    }
    };

    int main() {

    srand (time (NULL));

    mazzo carta[10];
    mazzo seme[4];

    for(int i=0; i<10; i++) {
    carta[i]=randomn(); //errore in questa riga"funzione randomn non dichiarata"
    cout<<"carta ["<<i<<"] e': "<<carta[i];
    }


    for(int t=0; t<4; t++) {
    seme[4]=randomm();
    cout<<"seme ["<<t<<"] e': "<<seme[t];
    }

    system("pause");
    return 0;
    }

    mi dice funzione non dichiarata ma nella classe è sotto public:
    grazie e buona notte

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non hai ancora assimilito correttamente le basi ...

    1) mancano il costruttore e il distruttore della classe

    mazzo() {};

    ~mazzo() {};

    2) le due variabili (m e n) non devono fare parte della parte public della classe, ma alla private

    class mazzo
    {
    int m;
    char n;
    public:
    // ...
    };

    3) le due funzioni restituiscono il valore del dato elaborato. Non devono restituire nulla ed operare sul membro privato

    void randomn()
    {
    n=1+rand()%10;
    }

    void randomm()
    {
    m=1+rand()%4;
    }

    4) le funzioni membro non sono richiamate nel main in maniera corretta. Inoltre, l'indice di seme deve variare. Deve essere

    carta[i].randomn();

    seme[t].randomm();

    5) In realta' non capisco come sia implementata la classe. Una carta deve avere un valore e un seme ...

  3. #3
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    Apro una piccola parentesi... come si fa a creare una funzione nella classe in modo tale che nel main mi richieda un parametro?

    codice:
    class x{
          ...
          int parametro;
          ...
          
          ...
          funzione (int parametro){
                ....
          }
          ...
    }
    così è corretto?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma per te cosa e' un parametro?

    Se intendi chiedere il modo per definire una funzione membro che accetti un parametro e valorizzi un suo membro interno, allora

    codice:
    class x
    {
    private:
          ...
          int m_par;
          ...
    public:
          ...
          void funzione (int parametro)
          {
                m_par=parametro;
          }
          ...
    }
    altrimenti non ho capito il tuo problema ...

  5. #5
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    no sono io che spesso e volentieri non riesco a spiegarmi.... intendevo una funzione tipo lo "strlen(stringa)"....

  6. #6
    Intendi una funzione non all'interno di una classe? :master:
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    Allora... intendo creare una funzione all'interno di una classe e poi utilizzarla nel programma... nal main... quello che sia, come lo "strlen(x)"

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Fai un esempio "pratico" di una classe e di una funzione membro di cui parli ... perche' non si capisce cosa vuoi.

  9. #9
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    Allora... forse è meglio che si parta da 0... che sono un tipo notevolmente confuso...

    Quando creo una classe la devo salvare in un file ".h" .... giusto?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E che c'entra questo con quello che hai chiesto prima?

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.