动态对象数组
C++ Dynamic array of objects
我对指针有问题。我的课程:
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
}
上面的代码必须创建一个动态数组,并将第一个和第二个对象添加到这个数组中。
错误:
1)。Error 4 Error C2679: binary '=':找不到右操作数为'int'的操作符(或者没有可接受的转换)
2)。C2679: binary '=':没有找到右操作数为'Czasteczka *'的操作符(或者没有可接受的转换)谢谢大家的帮助!:)
Czasteczka *tablicaCzasteczek
是指向Czasteczka
实例的指针。它也可以保存指向衰减的Czasteczka
数组的第一个元素的指针。这是需要理解的关键部分:
tablicaCzasteczek[0] = NULL;
等价于*tablicaCzasteczek = NULL
。这意味着您试图将NULL分配给Czasteczka
的实例。
如果你真的想让你的代码工作,声明tablicaCzasteczek
为
Czasteczka **tablicaCzasteczek;
和后面的
this->tablicaCzasteczek = new Czasteczka*[n];
但是如果你不知道你在做什么(我在你的例子中没有看到任何析构函数),那就是自找麻烦。
正如其他人所建议的那样,如果使用std::vector,将会少一些麻烦。你最好这样写:class Czasteczka
{
public:
Czasteczka(int x, int y);
Czasteczka(const Czasteczka &other);
};
std::vector <Czasteczka> zbiorCzasteczek;
如果是c++ 11:
zbiorCzasteczek.emplace_back(someX, someY);
如果你不是:
zbiorCzasteczek.push_back(Czasteczka(someX, someY));
你可以像访问数组(zbiorCzasteczek[0]
)一样访问你的元素。在这种情况下,您不必担心内存管理,因为std::vector
将为您处理这个问题。
当然你也可以把vector作为类的成员。我遗漏了你的Zbior
类,因为在你的例子中,它没有做任何特别的事情。
相关文章:
- 销毁C++中动态分配的内存(数组对象)
- 数组对象的生存期是否在重用其元素存储时结束?
- 为什么顶点数组对象会导致错误?
- 具有纯虚函数和指针数组对象类型的父类的指针数组
- 这是使用构造函数初始化数组对象的最佳方法吗?
- OpenGL 顶点数组对象与 tinyobjloader
- 将数组/对象/结构列表从C#库中传递给C MFC应用程序
- C++ RapidJson 帮助反序列化数组对象
- ptrdiff_t可以表示指向同一数组对象元素的指针的所有减法吗?
- 检查成员函数是否返回临时对象或数组对象
- 为什么 std::variant 不能容纳数组对象类型,而联合可以?
- 当数组对象以函数参数传递时,为什么复制构造函数会自称
- 如何使用箭头指针打印出一类数组对象,这些对象中有多个分数
- C++17 std::shared_ptr<> 类数组对象的重载运算符 []
- 添加两个具有运算符重载的数组对象,从而导致分段错误
- opengl:两个不同的矢量可以绑定到同一个顶点数组对象吗
- 使用相同的数据填充数组对象或使用指针
- 方法用于最快的分配,并且不需要将动态大小的数组对象作为局部变量
- 如何将2d数组对象传递给c++中的函数
- ReferenceTable溢出(jni-android),数组对象释放