Konwersja char na typ wyliczeniowy

0
enum Symbol { e, a, b, c, d };

Mam funkcję (nazwę ją func)która zwraca mi char, czyli jakis tam znak oraz zdefiniowany typ wyliczeniowy jak powyzej.

I kolejnym krokiem jest wywołanie funkcji której deklaracja wygląda następująco:

Dodaj( Symbol Arg1 ,Symbol Arg2 );

Czyli jej argumentami wywołania może być któraś z liter abcde . Tak to rozumuję.

Powiedzmy ze chce zrobic to tak:

Symbol Arg1;
Symbol Arg2;

// I dalej w programie...

Symbol Arg1=func();
Symbol Arg2=func();

// No i teraz umieszczam wywołanie funkci :
Dodaj( Symbol Arg1 ,Symbol Arg2 );

Pojawia się problem :

invalid conversion from ‘char’ to ‘Symbol’ - gdy chcę przypisac zwracany znak do Symbol Arg1

oraz

//expected primary-expression before ‘Arg1’
o//

w wywołaniu funkcji Dodaj.
Jak to naprawić, jak moge przypisac ten znak do typu wyliczeniowego, tak aby wywołac kolejną funkcję ?

0

Dodaj( Symbol Arg1 ,Symbol Arg2 ); to ma być wywołanie funkcji? A dlaczego nie po prostu Dodaj(Arg1, Arg2);?

0

Ok, można i tak ale to nie zmienia faktu że problem nr 1 pozostaje :(

  • invalid conversion from ‘char’ to ‘Symbol’ *
 
char a=func();

Symbol Arg1=(Symbol)a;

// i teraz .. 

Dodaj(Arg1,Arg2);
0

Ten kod to zupełnie co innego, niż to, co było w pierwszym poście.

Co to za dziwna konwersja? Po co robisz coś tak dziwnego? Może po prostu napisz co Ty chcesz osiągnąć, bo chwilowo robisz to źle.

Chcesz wprowadzić z klawiatury znak a potem skonwertować go na odpowiadający element tego enum? Po co Ci takie dziwadło?

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