
请问这是什么问题:Program received signal SIGSEGV, Segmentation fault. 10
classPoint{private:int*data;intdimension;public:Point(int);Point(int*,int);Point&oper...
class Point
{
private:
int *data;
int dimension;
public:
Point(int);
Point(int*, int);
Point& operator+(const Point&);
Point& operator-(const Point&);
Point& operator=(const Point&);
void print();
};
Point::Point(int d)
:dimension(d)
{
}
Point::Point(int *Da , int di)
:data(Da),dimension(di)
{
}
Point& Point::operator=(const Point&p2)
{
this->dimension = p2.dimension;
for (int i = 0 ;i < p2.dimension ; i++)
{
this->data[i] = p2.data[i];
}
return *this;
} 展开
{
private:
int *data;
int dimension;
public:
Point(int);
Point(int*, int);
Point& operator+(const Point&);
Point& operator-(const Point&);
Point& operator=(const Point&);
void print();
};
Point::Point(int d)
:dimension(d)
{
}
Point::Point(int *Da , int di)
:data(Da),dimension(di)
{
}
Point& Point::operator=(const Point&p2)
{
this->dimension = p2.dimension;
for (int i = 0 ;i < p2.dimension ; i++)
{
this->data[i] = p2.data[i];
}
return *this;
} 展开
1个回答
展开全部
Point类的第一个构造函数中,没有初始化成员变量data。
如果直接使用等号操作符的话,其中this->data[i]这一句会出错,会使用非法地址。
如果直接使用等号操作符的话,其中this->data[i]这一句会出错,会使用非法地址。
更多追问追答
追问
那怎样才能解决那个问题
追答
确保在使用data的时候,data已经有有效地址。
即,在使用data之间,给data分配了内存空间。
在哪个函数中分配空间都可以,只要保证用data的时候是有效空间就行。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询