Hej, jag undrar om man kan definiera en klass inuti en annan klass: Det är ganska ovanligt, men kan ha sin poäng. Det du kan tjäna på det är att B är väldigt starkt bunden till A. Exakta reglerna för hur den klassen fungerar med omvärlden är jag osäker på just nu, men jag har svårt att tänka mig att du behöver använda dig av metoden innan du har lärt dig det. Ja det var väl ungefär så jag menade, en till fråga om detta... Kan man då göra en hel klass private tex? Och om man deklarerar klassen inom en annan klass, kan jag bara komma åt den då inifrån den klassen som innehåller den andra! Puh vad rörigt det där blev! Om du deklarerar den inbäddade klassen i "private" delen så kan den bara användas inom huvudklassen. För så kallade member classes, eller nested classes som de också kallas, som du frågar om gäller de vanliga åtkomstreglerna, dvs. om du deklarerar klassen i private-sektionen blir den endast åtkomlig innifrån klassen (eller dess vänner). Ja det är lite det jag är ute efter. Har bara gjort länkade listor i C så jag tänkte prova på lite i C++. Tack för era svar!Klass i klass
Tex:
<code>
class A
{
public:
class B
{
public:
void do_something();
};
};
</code>
Vad kan man vinna på detta?Sv: Klass i klass
Primära syftet är att ha en hjälpklass som gör ett jobb åt klassen, men som inte ska användas för något annat, t.ex. en nod i en kö, eller ett s.k. memorychunk i en memorypool.
Men det är helt korrekt C++, om det var det du undrade.Sv: Klass i klass
Är det vanligt att man gör detta med länkade listor? Eller är det ett krångligt sätt?Sv: Klass i klass
Förstår dock inte vad inbäddade klasser har med länkade listor att göra. Länkade listor gör man väl med std::list eller std::deque?Sv: Klass i klass
Om man ska implementera en egen länkad lista kan man använda medlemsklasser för noderna i listan.
Som Martin mycket riktigt påpekar är det bättre att använda std::list om man ska ANVÄNDA en länkad lista men om själva meningen är att man ska LÄRA sig principen bör man ju naturligtvis skriva den själv.Sv: Klass i klass