|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
templates in VC6
è normale che il compilatore non riesca a vedere l'implementazione delle funzioni membro di un template a meno che queste non siano scritte direttamente nell'header dopo la dichiarazione della classe piuttosto che in un file .cpp che include l'header??
![]() perché in Visual C++ 6 accade proprio questo, e stavolta non diamo la colpa a Microsoft perché uso il compilatore Intel... ![]() se si tratta di un fatto standard, dov'è che posso reperire una documentazione ufficiale di questo fatto? grazie. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E' normale, le varie implementazioni di una funzione/classe template vengono create al momento della compilazione del sorgente che le usa...
Ad esempio se hai una funzione f che ha un parametro template di tipo class e nel file che utilizza questa funzione template questa viene richiamata in questo modo: f<int> f<float> f<double> il compilatore crea tre funzioni distinte, ognuna andando a sostituire il tipo passato all'interno del codice sorgente... E' proprio per questa sostituzione che è necessario che il codice sia incluso nel .h... Chiaramente non è possibile creare le varie funzioni al momento del linking...momento in cui i due file .cpp andrebbero ad integrarsi l'un l'altro, ma devono essere già compilati... Ultima modifica di cionci : 23-12-2005 alle 18:12. |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
Se non ho capito male...: vai a questo link: http://xoomer.virgilio.it/ramsoft/ e clicca il capitolo 28: Capitolo 28 Linking tra moduli Assembly Leggilo tutto... secondo me quello che vuoi fare lo puoi fare per i file com lavorando in asm con i vari tool purtroppo per gli exe non lo puoi fare... rettifico: non lo puoi fare per il semplice fatto del tool in questione che usi vc6 o cmq anche altri e simili. ciao 28.1.1 Eseguibili in formato COM la riga cap da trovare: e lo stesso attributo di classe. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:47.




















