View Full Version : 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?? :mbe:
perché in Visual C++ 6 accade proprio questo, e stavolta non diamo la colpa a Microsoft perché uso il compilatore Intel... :mbe:
se si tratta di un fatto standard, dov'è che posso reperire una documentazione ufficiale di questo fatto?
grazie.
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...
è 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?? :mbe:
perché in Visual C++ 6 accade proprio questo, e stavolta non diamo la colpa a Microsoft perché uso il compilatore Intel... :mbe:
se si tratta di un fatto standard, dov'è che posso reperire una documentazione ufficiale di questo fatto?
grazie.
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.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.