1

像这样的东西:

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 的。那么如何使用自己的方法设置类的私有属性呢?非常感谢。

4

3 回答 3

6

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

long someclass::Set(int x, int y)
{
   _x = x;
   _y = y;
}
于 2012-11-09T16:05:00.950 回答
4

当您在其类定义之外定义成员函数时,您必须适当地限定它的范围:

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

你写的定义了一个不相关的全局函数Set

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

于 2012-11-09T16:06:11.307 回答
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;
}
于 2012-11-09T16:06:14.047 回答