在不同的类C++中构造类属性数组
Constructing an array of class attribute in a different class C++
我必须做一个项目,其中一个类Row
有一个整数数组int* OneArray
然后另一个类Array
有一个第一类Row* TwoDArray
数组。 从本质上讲,该类在整数上有一个 2D 数组,当它在一个类中时,我可以轻松地构造 2D 数组。然而,现在我完全被难住了。
Row
的构造非常简单:
//set length of array
numOfRows = intRows;
//Create space for array
OneArray = new int[intRows];
//populate array with random numbers
for(int i=0; i<intRows; i++)
{
OneArray[i] = GenerateRandom(9,0);
}
这就是我被困的地方(Array
的建设):
//Set Number of Cols
NumOfCol = intCols;
//create length for each row
int intLength = 4;
for(int i=0; i<NumOfCol; i++)
{
//create space and call row constructor with length
TwoDArray = new Row(intLength);
//increase length for jagged array
intLength++;
}
就像现在一样,它在每个 for 循环之后写入当前数组(这是预期的)。所以,我需要像TwoDArray[i]
这样的索引TwoDArray
,但是一旦我尝试这样做,就会出现此错误:
"从'行*'到'常量行&'的用户定义转换无效。">
注意:如果我将行从for循环中取出,则仅创建第一个数组,直到intCol
。intLength
正在增加,因为我在技术上需要一个交错数组,每个数组中都有不同的大小。
我的类看起来像这样:
class Row
{
public:
//Constructors
Row();
Row(int intRows);
Row(const Row& objPrev);
//Accessors
int getNumOfRows();
int getRowArray(int intRow);
//Mutators
void setRowArray(int intRow, int intChange);
//Destructor
~Row();
private:
int* OneArray;
int numOfRows;
}
和
class Array
{
public:
//Constructors
Array();
Array(int intRows, int intCols);
Array(const Array& objPrev);
//Accessors
int getNumOfCol();
Row getTwoDArray(int intCol, int intRow);
//Mutators
void setTwoDArray(int intCol, int intRow, int intChageTo);
//Destructor
~Array();
private:
Row* TwoDArray;
int NumOfCol;
}
任何帮助或建议不胜感激。
在循环中Array
多次分配单个Row
对象,覆盖每个循环中的指针。这会导致内存泄漏,因为只有最后一个可以通过变量TwoDArray
可用。此外,在循环结束时,您将拥有一个仅包含一个元素的"数组",即最后分配Row
对象。
问题是不能在调用特定构造函数的同时使用new[]
进行数组分配。你不能做例如
TwoDArray = new Row[NumOfCol](intLength);
相反,您必须将分配和初始化分为两部分:
TwoDArray = new Row[NumOfCol]; // Allocates memory, default constructed Row objects
for (int i = 0; i < NumOfCol; ++i)
{
TwoDArray[i] = Row(intLength); // Initialize each element
}
这当然需要您遵循三或五(或零)的规则才能使循环中的复制正常工作。
相关文章:
- 通过指向指针数组的指针访问子类的属性
- 如何在 C++ 中使用提升属性树从 JSON 文件中读取对象数组
- C++ 为什么数组没有长度属性
- 在C++中循环数组时访问结构属性
- 如何使用 boost 属性树来解析 boost 中 json 字符串中的数组中的元素?
- 访问用户定义类型的数组的特定属性
- 如何从对象数组中提取属性数组?
- 如何从类中返回自定义数组项目并操纵其属性?C
- 从C 读取QML数组属性
- 在不同的类C++中构造类属性数组
- 哪个更快,单个对象数组或多个数据属性数组
- 私有属性C++上的动态二维数组
- 只有Arduino的第一个对象在包含在另一个对象的集合/数组中时会丢失其数据属性值
- 为什么我不能更改结构的字符数组属性?
- 如何使用C Win32 API设置和获取多个值(数组值)到Active Directory中的单个属性
- 属性数组?
- 我正在尝试通过 Boost 图形库从 Graphviz DOT 文件中读取图形.如何读取存储在数组中的未知数量的属性
- 一个函数模板,可以根据任何属性对对象数组进行排序
- 将参数数组分配给头文件中定义的类属性(数组)
- OpenGL4.0中使用交错属性数组的性能增益