String na nazwe obiektu

0

siema siema załączam Od razu caly kod

#include <cstdlib>
#include <iostream>
#include <sstream>
#include <string.h>
using namespace std;
void gra();
/////////PYTANIA
class pyta{
public:
int numer;
string tresc;
string odpowiedz_a;
string odpowiedz_b;            
string odpowiedz_c;
string odpowiedz_d;
char wlasciwa;
};
//////
///////
pyta pytanie1={1,"p1","a","b","c","d",'a'};
pyta pytanie2={2,"p2","a","b","c","d",'a'};
pyta pytanie3={3,"p3","a","b","c","d",'a'};
pyta pytanie4={4,"p4","a","b","c","d",'a'};
pyta pytanie5={5,"p5","a","b","c","d",'a'};
pyta pytanie6={6,"p6","a","b","c","d",'a'};
pyta pytanie7={7,"p7","a","b","c","d",'a'};
pyta pytanie8={8,"p8","a","b","c","d",'a'};
pyta pytanie9={9,"p9","a","b","c","d",'a'};
pyta pytanie10={10,"p10","a","b","c","d",'a'};
/////// 

void menu()
{
int wybor;
cout<<"[1] gra"<<endl;
cin >> wybor;
   switch(wybor)
    {
     case 1: 
       gra(); 
     break;
  default:
    cout << "Błąd"; 
    }
}


void gra()
{
int wynik=0;
int ilosc_pytan;
cout<<"wybierz ilosc pytan:"<<endl;
cin >> ilosc_pytan;
for (int i=1;i<=ilosc_pytan;i++)
  {
    /*dorobic losowosc
//konwersja int na string*/
ostringstream ss;
ss<<i;
string liczba=ss.str();
string pytanie="pytanie"+liczba;
  
 cout << pytanie.tresc <<endl;
 cout <<"[A]: "<< pytanie.odpowiedz_a <<endl;
 cout <<"[B]: "<< pytanie.odpowiedz_b <<endl;
 cout <<"[C]: "<< pytanie.odpowiedz_c <<endl;
 cout <<"[D]: "<< pytanie.odpowiedz_d <<endl;
 cout <<"Odpowiedz: ";
 char odpowiedz;
 cin >> odpowiedz; 
 if (pytanie.wlasciwa==odpowiedz)
 {
  wynik++;
  }
    }

cout <<"odpowiedzialed dobrze na "<<wynik<<" pytan z "<<ilosc_pytan<<endl;
}


int main(int argc, char *argv[])
{
gra();
    system("PAUSE");
    return EXIT_SUCCESS;
}
 

problem jest taki ze nie moge urzyc stringa jako nazwy obiektu
to jest gra ktora mam oddac do szkoly ale chyba troche przekombinowalem
byl bym bardzo wdzieczny gdyby ktos poswiecil 5 minut swojego czasu i sprobowal podsunac mi jakies rozwiazanie :)

0

od tego są tablice lub inne kontenery(np. vector)

0
pyta pytania[10] = {
{1,"p1","a","b","c","d",'a'},
{2,"p2","a","b","c","d",'a'},
{3,"p3","a","b","c","d",'a'},
{4,"p4","a","b","c","d",'a'},
{5,"p5","a","b","c","d",'a'},
{6,"p6","a","b","c","d",'a'},
{7,"p7","a","b","c","d",'a'},
{8,"p8","a","b","c","d",'a'},
{9,"p9","a","b","c","d",'a'},
{10,"p10","a","b","c","d",'a'}
};
cout << pytania[i].tresc <<endl;
 cout <<"[A]: "<< pytania[i].odpowiedz_a <<endl;
 cout <<"[B]: "<< pytania[i].odpowiedz_b <<endl;

Tylko w for i musi być w przedziale <0,10)

0

dzieki, nie sadzilem ze az tak bez sensu komplikuje sobie prace ale te klasy wygladaly tak ladnie :D
jednak nadal ciekawi mnie czego trzeba użyć zeby rozwiazac ten problem :)

0

Nie da się - po kompilacji nazwy zmiennych przestają istnieć. Jak chcesz dobierać się do zmiennych po czymś innym niż np. index w tablicy czy wektorze możesz użyć mapy - std::map http://www.cplusplus.com/reference/stl/map/

0

jednak nadal ciekawi mnie czego trzeba użyć zeby rozwiazac ten problem
C++ nie ma refleksji, to o co pytasz jest niemożliwe.

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