1

オブジェクト (既定のコンストラクターを持たないオブジェクト) へのポインターを含む、サイズが不明な配列であるメンバー変数を宣言しようとしています。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
4

1 に答える 1

2

これはあなたがそれを行う方法です:

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 )
{
}
于 2013-06-15T03:16:54.330 に答える