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.
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会崩溃(如果你足够幸运的话).