簡體   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