C++ 'XY'之前的预期类型说明符 - 在成员函数中虚拟无效

C++ Expected type-specifier before 'XY' - In member function virtual void

本文关键字:成员 函数 虚拟 无效 说明符 XY C++ 类型      更新时间:2023-10-16

我正在处理我的项目(C++ 中的游戏),但我发现了这个错误。

"'Clovek'之前的预期类型说明符在成员函数中虚拟空"

此错误显示给所有人 - Clovek,PlatoveBrneni,ObourucniMec,BronzovyPrsten,LektvarCloveci。

对于这个项目,我使用设计模式 - 生成器。

感谢所有回复!

以下是代码:

CloverBuilder.h

#ifndef CLOVEK_BUILDER_H
#define CLOVEK_BUILDER_H
#include <iostream>
#include "HrdinaBuilder.h"
#include "Rasa.h"
#include "Brneni.h"
#include "Zbran.h"
#include "Prsten.h"
#include "Lektvar.h"
using namespace std;
namespace LordOfDragonV2 {
    class ClovekBuilder : LordOfDragonV2::HrdinaBuilder {

    public:
        void buildRasa(string nazevRasy, int silaRasy, int odolnostRasy, int inteligenceRasy, int pocetZivotaRasy, string popisRasy);
        void buildBrneni(string nazevBrneni, int bonusOdolnosti, int bonusZivota);
        void buildZbran(string nazevZbrane, int bonusSily, int bonusZivota);
        void buildPrsten(string nazevPrstenu, int bonusInteligence, int bonusZivota);
        void buildLektvar(string nazevLektvaru, int bonusSily, int bonusOdolnosti, int bonusInteligence, int bonusZivota);
    };
}
#endif //CLOVEK_BUILDER_H

丁香建造者.cpp

#include "ClovekBuilder.h"
void LordOfDragonV2::ClovekBuilder::buildRasa(string nazevRasy, int silaRasy, int odolnostRasy, int inteligenceRasy, int pocetZivotaRasy, string popisRasy) {
    m_hrdina->setRasa( new Clovek(nazevRasy, silaRasy, odolnostRasy, inteligenceRasy, pocetZivotaRasy, popisRasy) );
}
void LordOfDragonV2::ClovekBuilder::buildBrneni(string nazevBrneni, int bonusOdolnosti, int bonusZivota) {
    m_hrdina->setBrneni(new PlatoveBrneni(nazevBrneni, bonusOdolnosti, bonusZivota));
}
void LordOfDragonV2::ClovekBuilder::buildZbran(string nazevZbrane, int bonusSily, int bonusZivota) {
    m_hrdina->setZbran(new ObourucniMec(nazevZbrane, bonusSily, bonusZivota));
}
void LordOfDragonV2::ClovekBuilder::buildPrsten(string nazevPrstenu, int bonusInteligence, int bonusZivota) {
    m_hrdina->setPrsten(new BronzovyPrsten(nazevPrstenu, bonusInteligence, bonusZivota));
}
void LordOfDragonV2::ClovekBuilder::buildLektvar(string nazevLektvaru, int bonusSily, int bonusOdolnosti, int bonusInteligence, int bonusZivota) {
    m_hrdina->pridejLektvar(new LektvarCloveci(nazevLektvaru, bonusSily, bonusOdolnosti, bonusInteligence, bonusZivota));
}

你没有显示Clovek在哪里声明。很明显,编译器也没有看到Clovek的相应声明(和定义)

应包括声明或/和定义此类型的标头。

对于此函数中的示例,您尝试使用运算符 new 创建 Clovek 类型的对象:

void LordOfDragonV2::ClovekBuilder::buildRasa(string nazevRasy, int silaRasy, int odolnostRasy, int inteligenceRasy, int pocetZivotaRasy, string popisRasy) {
    m_hrdina->setRasa( new Clovek(nazevRasy, silaRasy, odolnostRasy, inteligenceRasy, pocetZivotaRasy, popisRasy) );

}

或者,也许您需要使用限定名称,例如LordOfDragonV2::Clovek而不是Clovek