|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Aug 2008
Messaggi: 24
|
[C++] Template e inclusioni incrociate
Ciao a tutti, mentre stavo lavorando ad un mio progetto mi sono imbattuto in un problema con i template. So che la dichiarazione e l'implementazione di metodi con template andrebbe messa nello stesso file, ma in questo caso le due classi si utilizzano a vicenda e ho ovviamente degli errori causati dal cross-include, mentre se scrivo i metodi nel file cpp associato ho il classico errore del linker. Qualcuno sa come uscirne?
Codice:
//file Object3D.h
class Object3D
{
...
template <size_t sizeData, size_t sizeIndex>
Object3D(ResourceManager * resourceManager, array<float, sizeData>&data, array<char, sizeIndex>&index)
{
// utilizzo di un oggetto ResourceManager
}
...
};
//file ResourceManager.h
class ResourceManager
{
...
template <size_t sizeData, size_t sizeIndex>
Object3DPtr createObject3DFromArray(array<float, sizeData>&data, array<short, sizeIndex>&index)
{
// utilizzo di un oggetto Object3D
}
...
};
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Prendilo con le pinze perchè non tocco C++ da prima che Stroustrup lo inventasse ma se non ricordo male l'intoppo si risolve con la dichiarazione dei prototipi delle classe/funzioni che intendi usare. Una cosa del tipo anzichè includere gli header dichiari nel sorgente che usa il tipo X la sua struttura come se fosse una classe a parte e poi il linker o quel che è vista la conformità delle firme provvede a fare i collegamenti giusti.
Ecco, giusto per farfugliarti un'idea.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: May 2005
Città: Trieste
Messaggi: 2287
|
Quote:
__________________
neo mini v2 / asus strix z490i / 10600k@? / uh12s / rx6700xt / 32gb ddr4@3200 / sandisk 250 + asenno 1tb / lenovo g34w
trattative concluse : tante... |
|
|
|
|
|
|
#4 | |
|
Junior Member
Iscritto dal: Aug 2008
Messaggi: 24
|
Quote:
Codice:
template <size_t sizeData, size_t sizeIndex> |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
size_t non ha bisogno di forward declaration. Sono le tue classi che ne hanno bisogno.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:19.



















