我顯然在這里犯了一個錯誤,但請幫助我。
#include <iostream>
#include <string>
using namespace std;
int main()
{
class Item
{
int Value;
int Use_On(Entity Target)
{
Target.HP = Value;
}
};
class Entity
{
int HP;
Item Slot;
};
}
Item類有一個改變Entity物件HP值的函式,Entity類有一個Item物件。這會導致錯誤,因為尚未宣告 Entity。我嘗試制作 Entity 類的原型并在 Item 類之前宣告它,但這只會導致另一個錯誤,指出 Entity 是不完整的型別。我該如何解決這個問題?另外,對不起標題,我不太擅長英語:|
uj5u.com熱心網友回復:
解決方法是前向宣告類,先宣告類方法,等所有類都宣告完后再定義。
class Entity;
class Item
{
int Value;
int Use_On(Entity Target);
};
class Entity
{
int HP;
Item Slot;
};
int Item::Use_On(Entity Target)
{
Target.HP = Value;
}
有關前向參考的完整討論和解釋,以及宣告和定義類方法的替代方法的詳細資訊,請參閱您的 C 教科書。
這應該可以解決立即編譯錯誤,但是您需要修復顯示的代碼還有多個其他問題。
Use_On被宣告為回傳一個int,但不回傳任何內容。在 C 中,默認情況下引數是按值傳遞的,這意味著
Use_On最終只修改其本地引數,否則絕對不會完成任何事情。無論物件被傳遞到這個類方法中,都保持完全不變。您需要更改代碼以通過指標或參考傳遞引數。您的 C 教科書也將討論這些主題。類應該在全域范圍內宣告,而不是
main()在某些類功能不可用的函式內部宣告。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/394781.html
下一篇:使用Firebase存盤用戶影像
