2013-07-18 62 views
1

我是OOP的新手,我不明白如何将参数传递给类。不能访问在'Soldier'类中声明的私有成员

类声明:构造函数的

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

回答

0

现在人们已经回答了这一点,但明确:

class Soldier 
{ 
private: 
    int health; 
    int strength; 

public: 
    Soldier(int SetHealth, int SetStrength); 

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

BTW什么是连接治好怎么办呢?他们不采取任何参数,不返回任何内容奇。

+1

我的猜测是他们会在内部增加或减少'health'。 –

+0

或者打印出来,或者将其清零,... ;-) – doctorlove

1

类的成员隐含地是private,除非您将访问级别更改为publicprotected,所以Soldier::Soldier(int SetHealth, int SetStrength);是私人的 - 你不能访问它。

2

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

1

您已经定义的构造函数的

private 

一个访问级别默认情况下,如果不提别的,访问级别是私人 所以其变更为公开访问。

0

changet构造函数声明本public Soldier(int SetHealth, int SetStrength);

+1

这就是C# - 你需要一个冒号 – doctorlove

相关问题