Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C++]template

    sto iniziando a utilizzare i template e mi da il seguente errore:

    error LNK2001: unresolved external symbol "public: __thiscall CMatrix<int>::~CMatrix<int>(void)" (??1?$CMatrix@H@@QAE@XZ)


    ecco il file .h
    codice:
    #pragma once
    
    template < class T >
    class CMatrix
    {
    public:
    	CMatrix(void);
    public:
    	~CMatrix(void);
    };
    e il cpp

    codice:
    #include "StdAfx.h"
    #include "Matrix.h"
    
    
    
    template < class T > 
    CMatrix<T>::CMatrix(void)
    {
    }
    
    template < class T > 
    CMatrix<T>::~CMatrix(void)
    {
    }

    Dove sbaglio?

    EDIT: l'errore appare solo se dichiaro una variabile di tipo CMatrix :
    codice:
    CMatrix<int> a;

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Specifica il linguaggio nel titolo.

    La definizione e dichiarazione di un template va messa in un header file, altrimenti il compilatore non riesce a specializzare il tipo.

    Solo il Comeau compiler ( a quanto mi risulta ) permette di mettere la definizione in un file cpp

  3. #3
    cioè devo mettere tutto nel file .h?

    ma è bruttissimo!

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Benvenuto nel magico mondo dei template

    Scherzi a parte, perché è bruttissimo?

  5. #5
    perchè sono abituato a dividere tra i due file!

    comunque funziona

  6. #6
    Se vuoi mantenere la distinzione, puoi lasciare la definizione dei metodi nel cpp, ed includerlo (il cpp) nel h.

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.