c++ arv.|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
c++ arv.
zwi
Siktar mot toppen
Medlem
Forum Posts: 93
Member Since:
November 27, 2001
sp_UserOfflineSmall Offline
1
January 7, 2003 - 11:46 am
sp_Permalink sp_Print

Jag har en klass vid namn A och en vid B båda dessa ärver från klassen Bas och A ärver dessutom av klassen a_typ och B av klassen b_typ.
Jag vill nu skapa en array som jag kan stoppa in både klassen A och B utan att tappa någon egenskap eller funktion.
Help!

matricks
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 18
Member Since:
January 4, 2003
sp_UserOfflineSmall Offline
248140
January 7, 2003 - 2:00 pm
sp_Permalink sp_Print

Ett knep:

CBas apMinArray[10];
CA KlassAInstans;
CB KlassBInstans;

for(int i = 0; i < 10; i++)
{
if(rand()%2) apMinArray[i] = &KlassAInstans;
else apMinArray[i] = &KlassBInstans;
}

for(int i = 0; i < 10; i++)
{
CA *pA = dynamic_cast(apMinArray[i]);
CB *pB = dynamic_cast(apMinArray[i]);
if(pA) pA->SpecefikACommand();
if(pB) pB->SpecefikBCommand();

apMinArray[i]->BasKommando();
}

Sedan kan du använda virtuals också för att uppnå den funktionen som du vill ha. Det beror lite på vad du skall göra.

zwi
Siktar mot toppen
Medlem
Forum Posts: 93
Member Since:
November 27, 2001
sp_UserOfflineSmall Offline
248175
January 7, 2003 - 3:03 pm
sp_Permalink sp_Print

ville vara lite mer flexibel, skall kunna slänga in en C klass och en D klass (som är liknande som A och B) utan att behöva ändra någonting, detta problem är ett på hitta för att lösa ett mycket större..!

matricks
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 18
Member Since:
January 4, 2003
sp_UserOfflineSmall Offline
248238
January 7, 2003 - 4:34 pm
sp_Permalink sp_Print

Gör en bas klass med virtuals då.

class CBas
{
public:
virtual void PerformAction()
{
}

virtual void MustBeImplemented() = 0;
};

class CA
{
public:
void MustBeImplemented()
{
printf("Doing Stuff with An");
}
};

class CA
{
public:

void PerformAction()
{
printf("Yay, this B class can do this!n");
}

void MustBeImplemented()
{
printf("Doing Stuff with Bn");
}
};

något sånt då ?

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 1030
Currently Online:
Guest(s) 305
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL