Wskaźnik do klasy (baza)

0

Witam. Mam problem.
Robię projekt - baza danych gier. Mam klasy wg. platform gier, czyli:** PC,XBOX,PS2,PSP,PS3** dziedzicząca z klasy Gra.
Nie wiem jak operować na wskaźnikach...

Chciałbym zrobić na poczatku warunki

PC pc[10000];
X360 x360[10000];

if (strcmp(tempp1,"PC")!=0) {
			PC* temporary = &pc[10000];

else if (strcmp(tempp1,"X360")!=0) {
			X360* temporary = &x360[10000];

i potem tylko na końcu:

temporary[id2]->setPlatf(tempp1);
	temporary[id2]->setTitle(tempp2);
	temporary[id2]->setProd(tempp3);
	temporary[id2]->setGenre(tempp4);
	temporary[id2]->setAdd(tempp5);

niestety wskaźnik ten nie działa

A nie chce tyle kodu pisać i się babrać:

PC pc[10000];
X360 x360[10000];

if (strcmp(tempp1,"X360")!=0) {
	x360[id2].setPlatf(tempp1);
	x360[id2].setTitle(tempp2);
	x360[id2].setProd(tempp3);
	x360[id2].setGenre(tempp4);
	x360[id2].setAdd(tempp5);
}

else if (strcmp(tempp1,"PC")!=0) {
	pc[id2.setPlatf(tempp1);
	pc[id2].setTitle(tempp2);
	pc[id2].setProd(tempp3);
	pc[id2].setGenre(tempp4);
	pc[id2].setAdd(tempp5);
}

Proszę o pomoc. Z góry ślicznie dziękuje!

0

Zanim weźmiesz się za wskaźniki, poczytaj o tablicach, wtedy być może dowiesz się, że...

PC pc[10000];
X360 x360[10000];

Taki rozmiar tablic może być zbyt duży, żeby odłożyć je na stosie.

PC* temporary = &pc[10000];
X360* temporary = &x360[10000];

Ostatni element tych tablic ma indeks 9999.

2
if (strcmp(tempp1,"PC")!=0) PC* temporary=pc; 
else if (strcmp(tempp1,"X360")!=0) X360* temporary=x360;

Z tym że to ci nie pomoże ponieważ w momencie wykonania:
temporary[id2]->setPlatf(tempp1); - temporary musi być konkretnego znanego typu i kompilator tego dopilnuje.
Powinieneś zrobić:

Gra *tb[200000]; // lepiej zastanów się nad kontenerem lub listą jedno/dwu-kierunkową.
if(!strcmp(tempp1,"PC")) tb[id]=new PC;
else if(!strcmp(tempp1,"X360")) tb[id]=new X360;

tb[id]->setPlatf(tempp1);
tb[id]->setTitle(tempp2);
if(!strcmp(tempp1,"PC")) ((PC*)tb[id])->setPcSpecyficValue(temppPCSP);
else if(!strcmp(tempp1,"X360")) ((X360*)tb[id])->setX360SpecyficValue(temppX360SP);
++id;

1 użytkowników online, w tym zalogowanych: 0, gości: 1