//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 *);
};
"ошибка C2061: синтаксическая ошибка: идентификатор "терран""
"ошибка C2061: синтаксическая ошибка: идентификатор "Protoss""
ошибка в: void A_AbilityAttack_B(Protoss *) and void B_AbilityAttack_A(Terran *)
Как это исправить?
После исправления в методе класса Protoss я написал:
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());
}
}
И ошибка в x: «указатель на неполный тип класса не разрешен»
Итак, как это исправить?
#include "Protoss.h"
из Terran.h и вместо этого написатьclass Protoss;
. - person Dmitriy Zakablukov   schedule 10.07.2015