PDA

Visualizza la versione completa : [c++] dichiarazione matrice in classe


io.89
05-10-2010, 13:12
Salve, è la prima volta ke metto dentro una classe una matrice e non so come bisogna dichiararla??
nel main avrei fatto come sotto.Ma compilando la classe come scritto in baxo mi escono i seguenti errori:

MazzoCarte.h:9: error: invalid use of non-static data member ‘MazzoCarte::N’
MazzoCarte.h:11: error: from this location
MazzoCarte.h:11: error: array bound is not an integer constant
MazzoCarte.h:10: error: invalid use of non-static data member ‘MazzoCarte::M’
MazzoCarte.h:11: error: from this location
MazzoCarte.h:11: error: array bound is not an integer constant
MazzoCarte.h:15: error: array bound is not an integer constant
MazzoCarte.h:15: error: array bound is not an integer constant




class MazzoCarte
{
private:

const int N;
const int M;
Carta mazzo[N][M];

public:

MazzoCarte(const int N,const int M,Carta mazzo[N][M]);

};

qualcuno mi sa dire dove sbaglio, cosa dovrei cambiare ? :spy:

MItaly
05-10-2010, 13:18
Se N e M sono delle costanti le devi inizializzare con un qualche numero. Ad esempio:


const int N=4;
const int M=13;

Se invece vuoi che le dimensioni dell'array siano specificabili a runtime, devi usare l'allocazione dinamica.

sebaldar
06-10-2010, 13:14
una possibile implementazione è


#include <iostream>

using std::string;

class Carta {

/* membri privati e funzioni private */

public :
Carta ( unsigned int N, unsigned int M ) { \* .... \* }

/* membri e funzioni publiche */

};

class MazzoCarte
{

const int N;
const int M;

Carta carte;

public:

MazzoCarte ( ) :
N(4), M(13), carte( N, M ) {
\* .... \*
}

};

int main (int /* argc */, char ** /* argv */ )
{

MazzoCarte mio_mazzo;

return(0);

}

Loading