Hej Udviklere,
et hurtigt lille spørgsmål jeg ikke synes jeg kan finde svaret på:
Hvis jeg vil have en klassevariabel der referer til en anden klasse, uden at skulle lave en ny kopi - hvordan kan jeg så gøre det rent praktisk?
Og er det bedst at bruge en reference eller en pointer?
Og hvis jeg bruger en reference, hvordan kan jeg så initialisere den?
Et eksempel med reference kunne se sådan ud:
class Map
{
friend class Species;
private:
std::vector<std::vector<int> > domain;
//etc..
};
class Species
{
private:
const Map& r_map;
//etc...
};
- så har 'Species' mulighed for at tilgå 'domain' i 'Map'.
Men hvis jeg prøver at lave en constructor:
Species::Species(const Map& domain_map) : r_map(domain_map){}
får jeg en fejlmeddelelse fra compileren (måske pga min vector<vector>> i Map?). Det løser ikke problemet at give Map en copy constructor.
Jeg har prøvet at løse det ved at gøre r_map til en pointer, og så give constructoren:
Species::Species(const Map& domain_map) : r_map(new Map(domain_map)){}
men bruger det ikke hukommelse op?
Tak!
Indlæg senest redigeret d. 20.09.2007 14:13 af Bruger #8249