无法访问在类 'Soldier' 中声明的私有成员

cannot access private member declared in class 'Soldier'

本文关键字:声明 成员 Soldier 访问      更新时间:2023-10-16

我是OOP的新手,不知道如何将参数传递给类。

类的声明:

class Soldier
{
    Soldier(int SetHealth, int SetStrength);
private:
    int health;
    int strength;
public:
    void attacked();
    void healed();
    int getHealth();
    int getStrength();
};

构造函数的定义:

    Soldier::Soldier(int SetHealth, int SetStrength):
        health(SetHealth),
        strength(SetStrength)
    {
    }

当我尝试将参数传递给类时,它会说:

    1>------ Build started: Project: ConsoleApplication6, Configuration: Debug Win32 ------
    1>  ConsoleApplication6.cpp
    1>c:usersuserdocumentsvisual studio 2012projectsconsoleapplication6consoleapplication6consoleapplication6.cpp(11): error C2248: 'Soldier::Soldier' : cannot access private member declared in class 'Soldier'
    1>          c:usersuserdocumentsvisual studio 2012projectsconsoleapplication6consoleapplication6soldier.h(7) : see declaration of 'Soldier::Soldier'
    1>          c:usersuserdocumentsvisual studio 2012projectsconsoleapplication6consoleapplication6soldier.h(6) : see declaration of 'Soldier'
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

您的构造函数是private(正如错误消息所说)。默认情况下,如果未指定访问级别,则Class的每个成员都是private

您定义的构造函数的访问级别为

private

默认情况下,如果没有提及任何内容,则访问级别为私有级别因此,将其更改为公共访问。

除非您将访问级别更改为publicprotected,否则类的成员是隐式private,因此Soldier::Soldier(int SetHealth, int SetStrength);是私有的,因此您无法访问它。

将构造函数声明更改为此public Soldier(int SetHealth, int SetStrength);

人们现在已经回答了这个问题,但明确地说:

class Soldier
{
private:
    int health;
    int strength;
public:
    Soldier(int SetHealth, int SetStrength);
    void attacked();
    void healed();
    int getHealth();
    int getStrength();
};

BTW附身和痊愈后要做什么?它们不接受任何参数,也不返回任何内容。古怪的

将构造函数向公众移动";"部分";,使其成为CCD_ 9。事情一开始是private,除非你另有说明。