|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2002
Messaggi: 409
|
[C++] domanda sui Template
Salve a tutti
Avrei un quesito da porvi... In c++, quando creo una classe generica (cioè utilizzando i template), posso separare la dichiarazione della classe (in un file .h) dall'implementazione (in un file .cpp)? In pratica quando faccio quanto separo una classe generica in due file, ed includo il file .h nel main, si verifica un errore in fase di compliazione. Inoltre ho letto da qualche parte, che in effetti ha poco senso dividere una classe generica in due file, ma la dichiarazione e l'implementazione andrebbe fatta nel file .h. Ecco un esempio... Queue.h Codice:
#ifndef QUEUE_H_ #define QUEUE_H_ template <class QType >class Queue { QType q[20]; int sloc, rloc; public: Queue(); void qput(QType); QType qget(); }; #endif /*QUEUE_H_*/ Codice:
#include "Queue.h" template <class QType> Queue<QType>::Queue() { sloc = 0; rloc = 0; } template <class QType> void Queue<QType>::qput(QType i) { if(sloc==20) { return; } sloc++; q[sloc] = i; } template <class QType> QType Queue<QType>::qget() { if(rloc == sloc) { return 0; } rloc++; return q[rloc]; } Codice:
#include "Queue.h" #include <iostream> using namespace std; int main() { Queue<int> coda; coda.qput(10); cout<<coda.qget(); return 0; } Grazie!
__________________
Sony Vaio FE11M | EeePC 901 Linux | Intel C2D E6750 | Asus P5K-E WiFi/AP | Corsair XMS2 PC 6400 2x1GB | Hitachi 7K250 80GB Sata | Hitachi 7K250 80GB Sata | Seagate 7200.10 500GB Sata | LiteOn Combo 5232K | Nec ND-3500 | GeForce 8400GS | Monitor LG L204WT| Creative Inspire 5.1 Digital 5500 | Logitech Cordless Desktop MX | Mouse MX700 | LinkSys WAG54G | Canon IP4000 | Dell X50v | Nikon Coolpix 3100 | FujiFilm FinePix S5600 | Sony Alpha 300 18-70 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
No. Dichiarazione e implementazione del template devono essere nella stessa unita' di traslazione dove e' instanziato. Tradotto in italiano: tutto nel .hpp
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Sep 2002
Messaggi: 409
|
Ti ringrazio
![]()
__________________
Sony Vaio FE11M | EeePC 901 Linux | Intel C2D E6750 | Asus P5K-E WiFi/AP | Corsair XMS2 PC 6400 2x1GB | Hitachi 7K250 80GB Sata | Hitachi 7K250 80GB Sata | Seagate 7200.10 500GB Sata | LiteOn Combo 5232K | Nec ND-3500 | GeForce 8400GS | Monitor LG L204WT| Creative Inspire 5.1 Digital 5500 | Logitech Cordless Desktop MX | Mouse MX700 | LinkSys WAG54G | Canon IP4000 | Dell X50v | Nikon Coolpix 3100 | FujiFilm FinePix S5600 | Sony Alpha 300 18-70 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:12.