2

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 ==========
4

5 に答える 5

4

あなたのコンストラクターはprivate(エラーメッセージが示すように)です。デフォルトでは、アクセス レベルを指定しない場合、a のすべてのメンバーClassはです。private

于 2013-07-18T10:02:18.573 に答える
2

定義したコンストラクターのアクセス レベルは

private

デフォルトでは、何も言及されていない場合、アクセス レベルは非公開になっているため、アクセスするには公開に変更します。

于 2013-07-18T10:05:35.740 に答える
1

privateアクセスレベルをpublicorに変更しない限り、クラスのメンバーは暗黙的protectedに存在するため、Soldier::Soldier(int SetHealth, int SetStrength);プライベートであるため、アクセスできません。

于 2013-07-18T10:01:53.627 に答える
0

コンストラクタ宣言をこれに変更public Soldier(int SetHealth, int SetStrength);

于 2013-07-18T10:06:07.387 に答える