在类c++中使用new声明数组
declaring an array using new in a class c++
#include <iostream>
using namespace std;
class Point {
int x, y;
public:
Point ():x(0),y(0){};
void setX (int xx){x = xx;};
void setY (int yy){y = yy;};
int getX (){return x;};
int getY (){return y;};
};
class Polygon {
int n;
double degree;
Point* vertex;
public:
Polygon (int nn):n(nn){
degree = 360.0 / n;
//vertex = new Point [n];
};
private:
vertex = new Point [n];
};
所以我试图用new声明顶点数组,但我一直得到这个错误:数据成员初始值设定项不允许
是否考虑初始化"new"?!我试着在构造函数中做这件事,但我认为它只会在构造函数的范围内工作。
我也对此感到困惑:n应该在使用new之前初始化,所以如果我只是在构造函数之后写声明,这会解决吗?
class Point {
public:
Point ():x(0),y(0){};
void setX (int xx){x = xx;}
void setY (int yy){y = yy;}
int getX (){return x;}
int getY (){return y;}
//change access level to 'private'.
private:
int x;
int y;
};
class Polygon {
public:
Polygon (int nn):n(nn){
degree = 360.0 / n;
vertex = new Point [n];
}
// deallocate memory from heap
~Polygon () {
delete [] vertex;
}
// overload copy constructor to avoid double free
Polygon (const Polygon& pg) : n(pg.n), degree(pg.degree) {
vertex = new Point [n];
for (int i = 0; i < n; i++) {
vertex[i] = pg.vertex[i];
}
}
// overload assignment operator to avoid memory leak
Polygon& operator=(const Polygon& pg) {
if (this != &pg) {
n = pg.n;
degree = pg.degree;
delete [] vertex;
vertex = new Point[n];
for (int i = 0; i < n; i++) {
vertex[i] = pg.vertex[i];
}
}
return *this;
}
// use pointer to change/get the value.
Point* get_vertex() {
return vertex;
}
//change access level to 'private'.
private:
int n;
double degree;
Point* vertex;
};
相关文章:
- .cpp和.h文件中的模板专用化声明
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 在类c++中使用new声明数组
- 声明C++数组(带或不带 "new" 关键字)
- 使用new创建数组而不声明大小
- 为什么当我使用"new"关键字声明数组指针时无法删除它
- 将函数放在类中,然后声明"New"是否使其线程安全?
- 当声明成员函数时,*New()是什么意思
- 访问用new声明的数据的正确方式
- 如何在c++中使用new声明多个2d数组
- 双指针二维数组声明int** seq=new int* [n];
- 在函数中声明new int[]时,在main中使用delete[]
- 变量声明冲突导致编译器错误:"conflict with new declaration with '
- 替换函数'operator new'不能声明'inline' [-werror,-winline-new-delete]
- 直接声明变量和使用关键字new有什么区别
- 使用 'new int[n]' 声明新数组时,为什么它没有出现在局部变量列表中?