Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012

    [C++] Problema template con new()

    Stavo cercando di fare una classe template per la gestione di matrici e sono inceppato in questo problema.

    Il codice è questo:
    codice:
    matrix<class Type>::matrix() 
    {
    	// Inizializza il numero massimo di dimensioni
    	maxdim = 30;
    	// Parte con una sola dimensione
    	dimnum = 1;
    	// Alloca la memoria per contenere il numero di elementi
    	// delle varie dimensioni
    	dimensioni = new int[maxdim];
    	// La prima dimensione ha un elemento
    	dimensioni[0] = 1;
    	// Alloca lo spazio per i dati
    	dati = new Type [totelem()];
    }
    Ed il compilatore sulla riga incriminata mi segna:
    error C2512: 'Type' : no appropriate default constructor available

    la funzione totelem() restituisce un intero che specifica il numero totale degli elementi della matrice.

    dati è un puntatore al tipo template "Type"

    Come faccio allora ad allocare lo spazio per n elementi di tipo Type?

  2. #2
    Prova con:

    codice:
    template<class Type>
    matrix::matrix() 
    {
    	// Inizializza il numero massimo di dimensioni
    	maxdim = 30;
    	// Parte con una sola dimensione
    	dimnum = 1;
    	// Alloca la memoria per contenere il numero di elementi
    	// delle varie dimensioni
    	dimensioni = new int[maxdim];
    	// La prima dimensione ha un elemento
    	dimensioni[0] = 1;
    	// Alloca lo spazio per i dati
    	dati = new Type [totelem()];
    }
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  3. #3
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Niente da fare.
    Evidenzia:
    codice:
    matrix::matrix
    e dice:
    use of class template requires template argument list


  4. #4
    volevo dire

    codice:
     
    template<class Type>
    matrix<Type>::matrix() 
    {
    	// Inizializza il numero massimo di dimensioni
    	maxdim = 30;
    	// Parte con una sola dimensione
    	dimnum = 1;
    	// Alloca la memoria per contenere il numero di elementi
    	// delle varie dimensioni
    	dimensioni = new int[maxdim];
    	// La prima dimensione ha un elemento
    	dimensioni[0] = 1;
    	// Alloca lo spazio per i dati
    	dati = new Type [totelem()];
    }
    Scusa.

    Cmq i template nn sono cosi facili come sembra
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  5. #5
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Grazie
    Mi pareva che qualcosa nn andasse nella sintassi!
    Ora posso continuare la mia classe.


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.