Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    27

    [c++] dichiarazione matrice in classe

    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

    codice:
    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 ?

  2. #2
    Se N e M sono delle costanti le devi inizializzare con un qualche numero. Ad esempio:
    codice:
    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.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    una possibile implementazione è
    codice:
    #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);
    
    }

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