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