返回指向数组的指针

Elp*_*rto 0 c++ getter pointers

假设您有一个带有指向数组的私有指针的类.如何使用getter访问(或有效复制数据),以便可以使用其他变量访问它.

class MyClass
{
   private:
      double *x;
   public:
      myClass();
      virtual ~MyClass();
      double* getX() const;
      void setX(double* input);
};

MyClass::MyClass()
{
   double foo[2];
   double * xInput;
   foo[0] = 1;
   foo[1] = 2;

   xInput = foo;
   setX(xInput);
}

void MyClass::setX(double * input)
{
   x = input;
}

double * MyClass::getX() const;
{
   return x;
}

int main()
{
   MyClass spam(); // Construct object
   double * bar = spam.getX(); // This doesn't work
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,bar [0]和bar [1]等于jibberish : -9.2559631349317831e+061.

K-b*_*llo 7

MyClass spam(); // Construct object
Run Code Online (Sandbox Code Playgroud)

这不会构造一个对象,它声明一个spam不带参数的函数并返回一个MyClass.此默认值构造一个对象:

MyClass spam; // Construct object
Run Code Online (Sandbox Code Playgroud)

有关更多信息谷歌最令人烦恼的解析.

更新:正如@Mark Ransom指出的那样,您的代码还有另一个问题.在构造函数中,您创建一个数组,然后设置x为指向此类数组.但是,一旦构造函数完成执行,数组生命周期就会结束,因此进一步访问x会崩溃(如果你足够幸运的话).

  • 它如此令人烦恼的原因是很难发现 - 我当然错过了它.+1 (2认同)