10. januar 2007 - 00:58Der er
5 kommentarer og 1 løsning
hvilken class må hvad?
hi,
jeg har fire c++-classes
class c1 { public/private: ... };
class c2 { public/private: c1 test; // ok };
class c3 { public/private: c1 test; // ok c2 test2; // ok };
// c4 står for alle muglige andre class'es class c4 { public/private: c1 test; // fejl c2 test2; // fejl c3 test3; // ok }; ---------
kan man få alle øvrige class'es til ikke at kende c1 og c2? sådan at kun c3 kender begge class'es. c1 og c2 skal kunde kende hinanden. alle andre class'es skal alligevel have muligheden for at bruge c3.
Man kan i nogen omfang løse problemet med en kombination af friend og private constructor:
class c1 { private: friend class c2; friend class c3; c1() {} };
class c2 { private: c1 test; // ok friend class c1; friend class c3; c2() {} };
class c3 { private: c1 test; // ok c2 test2; // ok };
// c4 står for alle muglige andre class'es class c4 { public: c1 test; // fejl c2 test2; // fejl c3 test3; // ok };
int main() { c3 x; c4 y; }
Men det er ikke nogen specielt "køn" løsning. Hvordan en bedre løsning ville se ud afhænger af anvendelse, f.eks. skal brugere af c3 kende noget til c1 og c2?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.