Visual Studio error C2061: Syntaxfehler: Bezeichner

//Species.h
#pragma once
#include <iostream>
#include <string>
using namespace std;
class Species
{
protected:
    int HP, GroundAttack, AirAttack, MoveMode;
public:
};

//Protoss.h
#pragma once
#include "Species.h"
#include "Terran.h"

class Protoss : public Species
{
protected:
    int PS;
public:
    virtual void Input();
    virtual void Output();
    void B_AbilityAttack_A(Terran *);
};

//Terran.h
#pragma once
#include "Species"
#include "Protoss.h"

class Terran : public Species
{
public:
    virtual void Input();
    virtual void Output();
    void A_AbilityAttack_B(Protoss *);
};

"error C2061: Syntaxfehler : Bezeichner 'Terraner'"

"error C2061: Syntaxfehler : Bezeichner 'Protoss'"

Fehler in: void A_AbilityAttack_B(Protoss *) und void B_AbilityAttack_A(Terraner *)

Wie es zu lösen ist?

Nach fix In einer Methode der Klasse war, schrieb ich:

void Protoss::B_AbilityAttack_A(Terran *x)
{
    if (this->AbilityAttack() == 0 && x->GetMoveMode() == 0)
    {
        x->SetHP(x->GetHP() - this->GAttack());
    }
    else if (this->AbilityAttack() == 1 && x->GetMoveMode() == 0)
    {
        x->SetHP(x->GetHP() - this->GAttack());
    }
    else
    {
        x->SetHP(x->GetHP() - this->AAttack());
    }
}

Und Fehler in x : "Zeiger auf unvollständigen Klasse-Typ ist nicht erlaubt"

So, wie man es beheben?

  • Sie können entfernen #include "Protoss.h" vom Terran.h und statt schreiben class Protoss;.
InformationsquelleAutor Pooh | 2015-07-10
Schreibe einen Kommentar