Nie możesz zapisać:
cin klasa
Musisz stworzyć inną zmienną typu char lub string przechowującą wybór a potem ją pobrać poprzez strumień wejścia, np. tak:
char wybor;
cin >> wybor;
Potem tylko sprawdzasz jej wartość i ustalasz wartość zmiennej klasa, pamiętaj że wartość zmiennych char zapisuje się poprzez apostrofy i mają one tylko jeden znak (char - character). Masz poprawiony kod:
Jeśli czegoś nie rozumiesz to pisz, a jeśli uznałeś tą odpowiedź za wartościową oznacz ją jako najlepszą. :)
UPDATE:
Możesz też po prostu zrobić zmienną int, wpisać ją a potem zrobić rzutowanie na enum KlasaPostaci. Domyślnie pierwszy element enumu ma wartość 0, a dalej już są to wartości o 1 większe od poprzednich, jednak możesz je zmieniać:
enum Klasa
{
smogor = 2,
druid = 5,
ksiegowy //będzie mieć wartość 6
};
Kod:
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
enum KlasaPostaci { smogor, druid, ksiegowy };
int main()
{
cout << " Witaj posuzkiwaczu, znalazlem cie rannego pod drzewem i uleczylem. Wybierz klase postaci jaka chcialbys kontynuowac: " << endl;
cout << " [1] Smogor " << endl;
cout << " [3] druid " << endl;
cout << " [4] ksiegowy " << endl;
cout << " wpisz klase postaci: ";
int wybor;
cin >> wybor;
KlasaPostaci klasa;
klasa = (KlasaPostaci)wybor; //rzutowanie na enum KlasaPostaci
switch (klasa)
{
case smogor:
break;
case druid:
break;
case ksiegowy:
break;
default:
break;
}
return 0;
}
Dzięki takiemu zapisowi możesz zrobić jeszcze obsługę poprawności zakresu. A jeśli nie potrzebujesz zapisywać wpisanej wartości jako zmiennej wyliczeniowej (enum), to możesz po prostu zapisać:
int wybor;
cin >> wybor;
switch (wybor)
{
case smogor: //wpisano 0
break;
case druid: //wpisano 1
break;
case ksiegowy: //wpisano 2
break;
default:
break;
}