繁体   English   中英

C ++预期在'XY'之前的类型说明符-在成员函数virtual void中

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

我在我的项目上工作(C ++游戏),发现此错误。

“成员函数virtual void中'Clovek'之前的预期类型说明符”

此错误适用于所有用户-克洛维克,柏拉图·布尼尼,奥布鲁克尼·梅克,布朗佐维·普尔斯滕,列克瓦尔·克洛维奇。

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

感谢您的所有回复!

以下是代码:

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

ClovekBuilder.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM