C++对象数组

Lou*_*uis 0 c++ arrays

我在类中有一个数组,应该包含其他对象的一些实例.头文件如下所示:

class Document {
private:
    long arraysize;
    long count;
    Row* rows;
public:
    Document();
    ~Document();
}
Run Code Online (Sandbox Code Playgroud)

然后在构造函数中我像这样初始化数组:

this->rows = new Row[arraysize];
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,这只是设置rows为Row的实例而不是行数组.我如何初始化Row对象数组?

Jor*_*ans 5

SharpTooth和Wok的答案都是正确的.

我想补充一点,如果你已经在这个级别上挣扎,在这种情况下你最好使用std :: vector而不是内置数组.矢量将透明地处理增长和收缩.


Ced*_* H. 5

这应该工作.一个可能的"错误"将是一个不正确的值arraySize.

但是,您最好使用std::vector标准库中的a 来实现此目的.

#include <vector>
class Document { 
    // ...
    std::vector<Row> rows;
    // ...
};
Run Code Online (Sandbox Code Playgroud)

并在您的构造函数中:

Document::Document() : rows(arraySize) { // ... }
Run Code Online (Sandbox Code Playgroud)

要么

Document::Document() { rows.assign(arraySize, Row()); }
Run Code Online (Sandbox Code Playgroud)