Hej udviklere,
jeg har en klasse der kan holde styr på en stor mængde datalag (dyrearter, men det er lige meget). For at gøre mit design mere overskueligt har jeg en separat klasse til at håndtere filer: indlæse og gemme datalag, osv.
Problemet er at datalagene er pointers (Layer *) - de bliver dannet af fillæsningsklassen, men det er dataklassen der har ansvar for at delete dem. For at sikre mig at dataklassen rent faktisk tager ansvar for pointerne vil jeg gerne have et design a la
class FileReader
{
friend void Dataset::read(std::ostream& os);
private:
std::list<Layer*> read (std::ostream& os)
{...new Layer;....}
...
};
class Dataset
{
private:
std::list<Layer*> layers;
FileReader files;
public:
~Dataset {//delete the Layer pointers}
read (std::ostream& os) {layers = files.read(filestream);}
...
};
Problemet er at begge klasser har brug for at se hinandens implementering (da Dataset indeholder et FileReader objekt, og Filereader henviser til en Dataset funktion. - og det giver fejlmeddelelser fra min compiler.
Hvad kan jeg gøre for at undgå dette?
Indlæg senest redigeret d. 05.11.2007 20:20 af Bruger #8249