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

标签 c++ arrays pointers constructor

我正在尝试声明一个成员变量,它是一个大小未知的数组,其中包含指向对象(没有默认构造函数的对象)的指针。此外,我希望在明确分配数组之前用 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 )
{
}

关于c++ - 如何将指向数组的指针初始化为成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17119848/

相关文章:

c++ - 我可以在 system() 中使用两个字符串吗?

c - 尝试取数组开头和结尾特定部分的平均值

Java-复杂程序中的2D数组索引操作

java - 从数组返回流作为 int[] 而不是 Integer[]

c - 使用指针将节点插入二叉树

c - 不一致的 malloc 内存损坏

java - 将 C++ 原始类型 vector 转换为 Java 原始类型数组

c++ - 尽管有足够的空间,CListCtrl 仍显示省略号(仅限 Win2008 和 Win7)

c - 给定字符串分配不同内存的原因是什么?

C++转换题