在对象的构造函数中声明对象的数组?
Declare array of Object, within the Object's constructor?
如果我有一个类MyClass,我可以在MyClass的构造函数中在堆上声明一个MyClass数组吗?
我可以在 C# 中做到这一点,但它似乎不喜欢它C++?
我还收到一个关于 MyClass 类型没有合适的构造函数的错误??
class MyClass
{
public:
MyClass(int);
private
MyClass* array;
};
MyClass::MyClass(int size){
array = new MyClass[size];
}
为了有一个东西的数组,所说的东西必须是默认可构造的。您的MyClass
不是,因为它需要构建int
。
C# 的作用与以下各项相当:
MyClass** array = new MyClass*[size];
指针是默认可构造的,因此允许。基本上,每当你在 C# 中执行SomeObject
时,它就相当于在 C++ 中SomeObject*
。除了代码效率低下,甚至比 C# 对应代码更糟糕,并且到处都有泄漏。
你在这里的方法有一个比如何构造数组更根本的问题。
这样想:
class A
{
A* a;
public:
A();
};
A::A()
{
a = new A();
}
会发生什么?您尝试创建一个A
;在构造函数中,将创建一个new A
。 在该构造函数中,将创建另一个new A
...
轰,出记忆。
相关文章:
- 将对象数组的引用传递给函数
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 类对象数组的问题会导致崩溃
- Arduino C++在构造函数中用参数声明对象数组
- 使用对象数组对 SFML 进行动画处理
- C++ 对象数组堆栈溢出
- 如何将对象数组作为参数传递给模板
- 使用向量初始化参数化构造函数的对象数组
- 如何初始化对象数组?
- C++创建对象数组
- 在对象数组中搜索字符串并返回相应值的函数
- 有没有办法使用该类的构造函数初始化另一个类的私有部分内的对象数组?
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 为什么我在声明对象数组时不能使用 -> 运算符?
- 编译时生成应在构造函数中创建的非 constexpr 对象数组
- 使用 C++ 创建对象数组
- 对象数组打印空白字符串
- 重载运算符 [] 用于从对象数组中给出特定索引
- 如何在 C++ 中使用提升属性树从 JSON 文件中读取对象数组