1. ホーム
  2. c++

[解決済み] クラス 'Soldier' で宣言されたプライベートメンバにアクセスできません。

2022-02-19 06:43:10

質問

私は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 ==========

解決方法は?

今更ですが、明示的に回答している人がいます。

class Soldier
{
private:
    int health;
    int strength;

public:
    Soldier(int SetHealth, int SetStrength);

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

ところで、attachedとhealedは何をするのでしょうか?パラメータを取らず、何も返しません。変だな。


編集(先日のダウン投票を踏まえて)。

コンストラクタを public "section" に移動すると、以下のようになります。 public . 物事の始まりは private そうでないと言われるまで。