PDA

Visualizza la versione completa : [C/C++] Funzioni nelle classi


drinu
04-11-2006, 23:45
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

oregon
05-11-2006, 00:53
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 ...

Il Pazzo
05-11-2006, 08:41
Apro una piccola parentesi... come si fa a creare una funzione nella classe in modo tale che nel main mi richieda un parametro?



class x{
...
int parametro;
...

...
funzione (int parametro){
....
}
...
}


cos corretto?

oregon
05-11-2006, 09:14
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



class x
{
private:
...
int m_par;
...
public:
...
void funzione (int parametro)
{
m_par=parametro;
}
...
}


altrimenti non ho capito il tuo problema ...

Il Pazzo
05-11-2006, 09:51
no sono io che spesso e volentieri non riesco a spiegarmi.... intendevo una funzione tipo lo "strlen(stringa)"....

MItaly
05-11-2006, 10:17
Intendi una funzione non all'interno di una classe? :master:

Il Pazzo
05-11-2006, 10:23
Allora... intendo creare una funzione all'interno di una classe e poi utilizzarla nel programma... nal main... quello che sia, come lo "strlen(x)"

oregon
05-11-2006, 11:31
Fai un esempio "pratico" di una classe e di una funzione membro di cui parli ... perche' non si capisce cosa vuoi.

Il Pazzo
05-11-2006, 11:49
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?

oregon
05-11-2006, 14:10
E che c'entra questo con quello che hai chiesto prima?

Loading