使用公共方法c ++设置类的私有属性

时间:2012-11-09 16:03:48

标签: c++ class methods properties private

这样的事情:

class someclass
{
public:
    someclass();
    ~someclass();

    long   Set(int x, int y);

private:
        int _x;
        int _y;
};

long   Set(int x, int y)
{
   _x = x;
   _y = y;
}

但是如果你只是写这样的东西,则无法在Set()函数中识别_x。那么如何使用自己的方法设置类的私有属性呢?非常感谢。

3 个答案:

答案 0 :(得分:6)

你有一个范围问题。这应该有效:

long someclass::Set(int x, int y)
{
   _x = x;
   _y = y;
}

答案 1 :(得分:4)

在类定义之外定义成员函数时,必须适当地调整其范围:

long someClass::Set(int x, int y)
{
  _x = x;
 _y = y;
}

您所写的内容定义了一个不相关的全局函数Set

此外,Set的返回类型可能应为void(或者您必须从中返回一些内容)。

答案 2 :(得分:3)

你有什么实际的错字。您已声明了一个成员函数:

class someclass
{
public:
    long   Set(int x, int y);

...但实现了完全不同的,免费功能:

long   Set(int x, int y)
{
   _x = x;
   _y = y;
}

将后者改为:

long   someclass:Set(int x, int y)
{
   _x = x;
   _y = y;
}