如何将指向数组的指针初始化为成员变量

How to initialize a pointer to an array as a member variable

本文关键字:初始化 指针 成员 变量 数组      更新时间:2023-10-16

我试图声明一个成员变量,这是一个未知大小的数组,其中包含指向对象的指针(对象没有默认构造函数)。此外,我希望在显式赋值之前,用NULL指针填充数组。我该怎么做呢?

这是我到目前为止所做的(不相关的代码被删除):

在。h:

class Column
{
    private:
        Card  **_cards;
        qint32 _color;
};

在。cpp中:

Column::Column( qint32 color )
    :
_color( color )
{
    _cards = new Card[Card::maxValue()];
}

下面是相关的编译错误:

error: no matching function for call to ‘Card::Card()’
error: cannot convert ‘Card*’ to ‘Card**’ in assignment

你可以这样做:

class Column
{
    private:
        Card **_cards;
        qint32 _color;
};
Column::Column( qint32 color )
    : _cards(new Card *[Card::maxValue()])
      _color( color )
{
    for (size_t i=0; i!=Card::maxValue(); ++i) {
        _cards[i] = 0;
    }
}

,当然,使用std::vector会更好:

class Column
{
    private:
        std::vector<Card *> _cards;
        qint32 _color;
};
Column::Column( qint32 color )
    : _cards(Card::maxValue(),0)
      _color( color )
{
}