Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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];
}