Guten Abend
,
leider ist es mir nicht möglich, den Beispiel-Code aus dem Wiki-Artikel zu den Spielzustand-Automaten, zu kompilieren. Ich erhalte folgende Ausgabe:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
|
error C2678: Binärer Operator '!=': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'D1I::GameState' akzeptiert (oder keine geeignete Konvertierung möglich)
1> kann 'eingebauter C++ Operator!=(D1I::GameState *, D1I::GameState *)' sein
1> bei Anpassung der Argumentliste '(D1I::GameState, D1I::GameState *)'
1>...\statemanager.cpp(64) : error C2440: '=': 'std::pair<_Ty1,_Ty2>' kann nicht in 'D1I::GameState *' konvertiert werden
1> with
1> [
1> _Ty1=const std::string,
1> _Ty2=D1I::GameState *
1> ]
1> Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
|
Der Code dazu ist:
StateManager.cpp - Funktion - SetState
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
void StateManager::SetState(const std::string &id)
{
stateIterator nextStateIt = mStatesByID.find(id);
// Wenn der Zustand im Manager registriert ist
if (nextStateIt != mStatesByID.end())
{
// und nicht der aktuelle ist
FEHLER IST HIER ===> if(*nextStateIt != mCurrentState) <===
{
// OnLeave vom vorherigen State aufrufen, falls es einen gab
if (mCurrentState != NULL)
{
mCurrentState->OnLeave();
}
|
Nennenswert(?) wäre noch die Tatsache, dass sich sowohl der StateManager als auch die abstrakte Klasse GameState im selben namespace befinden. Ich habe leider keine Ahnung wo ich ansetzen muss, daher bitte ich um Hilfe..
Grüße