Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.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++ C++;动态对象数组_C++_Arrays_Pointers_Dynamic - Fatal编程技术网

C++ C++;动态对象数组

C++ C++;动态对象数组,c++,arrays,pointers,dynamic,C++,Arrays,Pointers,Dynamic,我对指针有问题。 我的班级: Zbior{ Czasteczka* tablicaCzasteczek; //it will be a pointer to dynamic array Zbior(); } Czasteczka{ Czasteczka(); Czasteczka(int x, int y); } Zbior的构造函数: Zbior::Zbior() { this->tablicaCzasteczek = new Czasteczka[n]

我对指针有问题。 我的班级:

Zbior{
   Czasteczka* tablicaCzasteczek;  //it will be a pointer to dynamic array
   Zbior();
}
Czasteczka{
   Czasteczka();
   Czasteczka(int x, int y);
}
Zbior的构造函数:

Zbior::Zbior()
{
   this->tablicaCzasteczek = new Czasteczka[n];
   for( int i=0 ; i<n ; i++ )
   {
      this->tablicaCzasteczek[i] = NULL;   <-- here is 1st error
   }
   this->tablicaCzasteczek[0] = new Czasteczka(X, Y);   <-- 2nd error
   this->tablicaCzasteczek[1] = new Czasteczka(X, Y+1); <-- same error as above
}
Zbior::Zbior()
{
此->tablicaCzasteczek=新Czasteczka[n];

对于(int i=0;itablicaCzasteczek[i]=NULL;tablicaCzasteczek[0]=new Czasteczka(X,Y);tablicaCzasteczek[1]=new Czasteczka(X,Y+1)
Czasteczka*tablicaCzasteczek
是指向
Czasteczka
实例的指针。它也可以是指向
Czasteczka
衰减数组的第一个元素的指针。这是理解以下内容的关键部分:

tablicaCzasteczek[0]=NULL;
相当于
*tablicaCzasteczek=NULL
。这意味着您试图将NULL分配给
Czasteczka
实例

如果您确实想让代码正常工作,请将
tablicazteczek
声明为

Czasteczka **tablicaCzasteczek;
后来

this->tablicaCzasteczek = new Czasteczka*[n];
但如果你不知道自己在做什么,那就麻烦了(我在你的例子中没有看到任何析构函数)

正如其他人所建议的那样,如果你使用它,你的头痛会少很多。如果你使用这样的东西,你会过得更好:

class Czasteczka
{
public:
    Czasteczka(int x, int y);
    Czasteczka(const Czasteczka &other);
};

std::vector <Czasteczka> zbiorCzasteczek;
或者如果你不是:

zbiorCzasteczek.push_back(Czasteczka(someX, someY));
然后,您可以像使用数组一样访问元素(
zbioczasteczek[0]
)。在这种情况下,您不必担心内存管理,因为
std::vector
将为您解决这一问题


当然,您也可以将向量作为类的成员。我省略了
Zbior
类,因为在您的示例中它没有做任何特殊的事情。

Czasteczka
不是指针。将null或
new
的结果赋给一个应该做的对象是什么?您能将
null
赋给
Cza的实例吗steczka
?看起来你对Java很熟悉。如果是这样,你需要忘记很多东西。除非你是为了“教育”而这样做的为此,您可以省去很多麻烦,使用
std::vector tablicaCzasteczek;
“…所有指针都是空的”没有指针!您已经有了
n
默认构造的
Czasteczka
zbiorCzasteczek.push_back(Czasteczka(someX, someY));