2013-06-15 1 views
1

개체에 대한 포인터 (기본 생성자가없는 개체)가 들어있는 알 수없는 크기의 배열 인 멤버 변수를 선언하려고합니다. 또한 명시 적으로 할당 할 때까지 배열을 NULL 포인터로 채워야합니다. 어떻게해야합니까? 통화 당에서배열에 대한 포인터를 멤버 변수로 초기화하는 방법

class Column 
{ 
    private: 

     Card **_cards; 
     qint32 _color; 
}; 

: 여기

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

는 관련 컴파일러있는 .H에서

: 여기

내가 (관련이없는 코드 제거) 지금까지 무엇을 가지고 오류 :

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

답변

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) 
{ 
} 
+0

큰 작품! 두 가지 예를 모두 제공해 주셔서 감사합니다. 나는 여전히 C++을 배우고 있으며 두 예제 모두 학습에 우수하다는 것을 알 수 있습니다. 감사! –

관련 문제