C++ 使用构造函数初始化指向已定义结构的指针数组 struct Mystruct { int x; int-y; Mystruct(intx,inty); } ------------------------ 类Myclass { 我的结构**p; Myclass(int n); } ------------------------ Myclass::Myclass(int n) { 这->p=新的Mystruct*[n]; 对于(int i=0;ip[i]=新的Mystruct[n]; }
这是行不通的。我知道问题出在默认构造函数不可用的地方,但我不知道如何从这里开始。你想要什么C++ 使用构造函数初始化指向已定义结构的指针数组 struct Mystruct { int x; int-y; Mystruct(intx,inty); } ------------------------ 类Myclass { 我的结构**p; Myclass(int n); } ------------------------ Myclass::Myclass(int n) { 这->p=新的Mystruct*[n]; 对于(int i=0;ip[i]=新的Mystruct[n]; },c++,arrays,pointers,constructor,C++,Arrays,Pointers,Constructor,这是行不通的。我知道问题出在默认构造函数不可用的地方,但我不知道如何从这里开始。你想要什么 struct Mystruct { int x; int y; Mystruct(int x, int y); } ------------------------ class Myclass { Mystruct** p; Myclass(int n); } ------------------------ Myclass::Myclass(int n) { this->p
struct Mystruct
{
int x;
int y;
Mystruct(int x, int y);
}
------------------------
class Myclass
{
Mystruct** p;
Myclass(int n);
}
------------------------
Myclass::Myclass(int n)
{
this->p = new Mystruct*[n];
for ( int i = 0; i < n; i++ )
this->p[i] = new Mystruct[n];
}
Myclass::Myclass(int n)
{
这->p=新的Mystruct*[n];
对于(int i=0;ip[i]=新的Mystruct[n];
}
因为Mystruct**p代码>
您还需要保存维度,并且要添加析构函数,很可能构造函数必须是公共的
正如在一条备注中所说,为了能够分配Mystruct数组,需要一个没有参数的构造函数this->p*
为什么是“*”?this->p[i]不是数组指针。尝试this->p[I]=newmyclass()首先,我将给出必须的std::vector p(n,std::vector(n))代码>将更加安全,并避免手动内存管理。不管怎样,我不清楚你想要所有的Mystruct
在数据方面包含什么。我修复了它到这个->p@乔治:这是一个学校项目,我们不允许使用向量。在Mystruct中,我希望有两个整数x和y,其中包含关于棋盘上的前置函数的信息。不要忘了将析构函数:…和默认的构造函数写入Mystruct
,否则内部数组分配将失败。谢谢你们,似乎在我编写默认构造函数时,所有警告都消失了。在这种情况下,可以将空的默认构造函数设置为Mystruct::Mystruct(){}
?@millan yes否则无法执行new Mystruct[n]代码>
Myclass::Myclass(int n)
{
this->p = new Mystruct*[n];
for ( int i = 0; i < n; i++ )
this->p[i] = new Mystruct[n];
}