无法访问在“士兵”类中声明的私有成员

新手上路,请多包涵

我是 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:\users\user\documents\visual studio 2012\projects\consoleapplication6\consoleapplication6\consoleapplication6.cpp(11): error C2248: 'Soldier::Soldier' : cannot access private member declared in class 'Soldier'
    1>          c:\users\user\documents\visual studio 2012\projects\consoleapplication6\consoleapplication6\soldier.h(7) : see declaration of 'Soldier::Soldier'
    1>          c:\users\user\documents\visual studio 2012\projects\consoleapplication6\consoleapplication6\soldier.h(6) : see declaration of 'Soldier'
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

原文由 user2594877 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 393
2 个回答

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

 class Soldier
{
private:
    int health;
    int strength;

public:
    Soldier(int SetHealth, int SetStrength);

    void attacked();
    void healed();
    int getHealth();
    int getStrength();
};

顺便说一句,附着和治愈会做什么?它们不带任何参数,也不返回任何内容。奇怪的。

将构造函数移动到公共“部分”,使其成为 public 。事情从 private 开始,直到您另有说明。

原文由 doctorlove 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

原文由 undu 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题