2011-05-14 3 views
4

벡터 내에서 벡터를 중첩하는 데 문제가 있습니다. C에서 2D 배열에 해당하는 문제가 있습니다. 수많은 웹 사이트에 게시 된 코드를 사용해 보았지만 아무 소용이 없습니다. 52 | | 오류 \의 MAIN.CPP : 일치를 호출에 '(표준 : : 벡터>) (INT, 표준에 대한벡터 내에서 벡터를 중첩하는 중첩 오류 <>

F : 내가 컴파일 할 때

class Board 
{ 
    public: 
     vector< vector<Cell> > boardVect; //Decalre the parent vector as a memebr of the Board class  

     Board() 
     { 
      boardVect(3, vector<Cell>(3)); //Populate the vector with 3 sets of cell vectors, which contain 3 cells each, effectivly creating a 3x3 grid. 

     } 
}; 

, 나는이 오류가 나타날 :: 벡터) '

라인 (52)은 다음과 같습니다 boardVect(3, vector<Cell>(3));

가 3 개 벡터 클래스와 부모 벡터를 구성 할 때 오류가 점점 오전 오류인가?

답변

12

당신은, 당신의 클래스의 멤버에 생성자를 호출하기 위해 초기화 목록을 사용하는 즉, 필요

생성자의 시체를 입력하면
Board() 
    :boardVect(3, vector<Cell>(3)) 
{} 

, 그것은 너무 늦게 모든 구성원의 이미 생성되었으며 비 생성자 멤버 함수 만 호출 할 수 있습니다. 물론 다음과 같이 할 수 있습니다.

Board() 
{ 
    boardVect = vector<vector<Cell> >(3, vector<Cell>(3)); 
} 

그러나 초기화 목록이 좋습니다.

+0

네, 제 문제였습니다. 고마워요! 지금 초기화 목록을 사용하고 있습니다. 그러나 객체 생성을위한 비 생성자 함수를 기억하십시오. – dymk