Lucio Settimio Severo
05-03-2012, 00:17
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?
//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
}
...
};
//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
}
...
};