2017-03-06 122 views
-3

我在編譯器中練習我的C++,並且我解決了所有的錯誤,但是這個錯誤。它說我的班級沒有申報。我甚至沒有宣佈我有第一堂課。C++錯誤說類沒有聲明

// Example program 
    #include <iostream> 
    #include <string> 
    using namespace std; 

    class Enemy{ 
private: 
int attack = 0, 
block = 0; 

public: 
void chargedAttack(){ 
    cout << "Get Ready!"; 
    } 
void spinningAttack(){ 
    cout << "How bout this!"; 
    } 
}; 

class minion::Enemy{ 
public: 
    int specialAttack(int x){ 
    int attackPower = x; 
    cout << "Take this you chump! " << attackPower + 6; 
    } 
}; 


int main() 
{ 
    minion chump1; 
    chump1.spinningAttack(); 

} 

這是錯誤消息:21:7:錯誤: '奴才' 還沒有被宣佈 21:20:錯誤:在 '{' 令牌

+2

在「class minion :: Enemy」中,有一個冒號太多。 – Rene

+0

你爲什麼會出現void spinningAttack(){cout <<「這是怎麼回事!」; } };而不是無效的旋轉攻擊(){ cout <<「這是怎麼回事!」; } } –

+0

然後這個類minion :: Enemy { public: int specialAttack(int x){attackerPower = x; cout <<「拿你這個笨蛋!」<< attackPower + 6; } };用class minion替換::敵人{ public: int specialAttack(int x){attackerPower = x; cout <<「拿你這個笨蛋!」<< attackPower + 6; } } –

回答

0

的你有問題有望不合格-ID是在你的minion類:

class minion::Enemy{ 
public: 
    int specialAttack(int x) 
    { 
     int attackPower = x; 
     cout << "Take this you chump! " << attackPower + 6; 
    } 
}; 

爲了聲明一個子類,它需要有語法如下:

class ChildClass : public ParentClass 
{ 
    // Declare variable and/or functions 
}; 

您正在聲明一個新的類,從而混淆了在其類的外部實現函數的語法。您可以在其類之外實現以下功能:

void AnyClassFunction::AnyClass { 

但是,不能使用相同的語法來聲明子類。您應該將minion類的標題行更改爲:

class minion : public Enemy{ // This tells the compiler that the minion class is inherited from the Enemy class 
public: 
    int specialAttack(int x) 
    { 
     int attackPower = x; 
     cout << "Take this you chump! " << attackPower + 6; 
    } 
};