c++ 无效使用非静态数据成员“health”

szqfcxe2  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(142)

我试图做一个简单的D&D游戏,我碰到了一个点,它给我这些错误无效使用非静态数据成员'健康'和其他几个类成员。如何解决此问题?这是我密码

void no(){
    time_t current_time = time(NULL);
    srand((unsigned) time(NULL));

    int bugstar = (((rand() % 8) + (rand() % 8)) + 2);
    int bujaveline = (((rand() % 2) + (rand() % 2)) + 4);
    int bugjaveline2 = ((rand() % 6) + 2);
    int bugstarboss = (((rand() % 8) + (rand() % 8)) + 3);
    int bujavelineboss = (((rand() % 2) + (rand() % 2)) + 3);
    int bugjavelineboss2 = ((rand() % 6) + 3);
}

int main()
{
BugBearBoss{
    health = 65;//error here
    armour = 17;//error here
    attack = "bugstarboss"; //error here
    attack1 = "bujavelineboss";//error here 
    attack2 = "bugjavelineboss2";//error here
}
BugBear{
    health = 27;//error here
    armour = 16;//error here
    attack = "bugstar";//error here
    attack1 = "bujaveline";//error here
    attack2 = "bugjaveline";type here//error here
}}

这些是我的类,用于包含错误的每个项目,这里是类的代码。

using namespace std;

class BugBearBoss{
public:
    string weakness;
    int health;
    int armour;
    int attack;
    int attack1;
    int attack2;
};

class BugBear{
public :
    string weakness;
    int health;
    int armour;
    int attack;
    int attack1;
    int attack2;
};

我试过把void函数变成一个int函数,并删除int main,但每一个都有自己的错误。
现在我使用了未声明的标识符BugbearBoss,以及无效使用了非静态数据成员“armour”

yv5phkfx

yv5phkfx1#

我试过把void函数变成一个int函数,并删除int main,但每一个都有自己的错误。
这些并没有解决问题,因为它们不是问题的根源。类中有非静态成员变量。它们属于类的 * 示例 * 而不是类本身。
现在,在您的情况下,它们都是私有的,您没有提供任何访问它们的机制,因此它们是无用的。您可以编写一个构造函数和一组成员函数来提供此数据的接口,或者将它们全部公开。

class BugBearBoss{
public:
    string weakness;
    string health;
    string armour;
    string attack;
    string attack1;
    string attack2;
};

或者:

struct BugBearBoss{
    string weakness;
    string health;
    string armour;
    string attack;
    string attack1;
    string attack2;
};

如果你这样做,你可以创建一个类的 * 示例 *,并为这些成员变量赋值。

int main() {
    BugBearBoss b;
    b.health = "whatever";
}

相关问题