2012-12-12 5 views
0

현재 STL 및 기초 라이브러리의 기본 사항을 배우고 있으며 도움이 필요합니다. 먼저 내가 어디에 있는지 설명하고 shared_ptrs의 vector를 구성하여 foo라는 클래스를 작성하려고합니다. 이전에는 배열 또는 포인터가 있었고 newdelete을 사용하여 메모리를 처리해야했으며 벡터 및 스마트 포인터로의 전환이 좋은 아이디어라고 생각했습니다. 내가 가장 두 가지 상황이 벡터를 전달하는 방법을 알고 싶습니다 이제C++ std :: vector 전달 :: boost :: shared_ptr < foo >>

class foo{ 
.... 
} 

int main(){ 
std::vector< boost::shared_ptr<foo> > vec_ptr; 
vec_ptr.push_back(boost::make_shared<foo>); 
.... 
} 

: - 함수 속으로 나는 현재 같은 있습니다. . 클래스 속으로

void func(std::vector< boost::shared_ptr <foo> >& vec_ptr_in_func){ 
    .... 
} 

: - 초기화 목록을 통해 객체를 초기화한다 클래스 객체 (의 생성자 내가 가장 잘 참조에 의해 전달되는 것을 추측 오전 함수에

속에서 같은 생성자 내 초기 추측

class vec_class{ 
vec_class(std::vector< boost::shared_ptr <foo> >& vec_ptr_in_class_) 
    : vec_ptr_in_class(vec_ptr_in_class_){...} 
} 

같은했다 확실하지 않다하지만이의 라인을 따라 오류를주는 것 같다 :

함수의
+1

벡터와 관련하여 기능이 무엇이며 생성자는 무엇입니까? 많은 것은 그것에 달려 있습니다. – jogojapan

+0

당신이 생성자를 public으로 만들고 싶습니다. 기본적으로 그것은 비공개입니다. –

답변

0
  1. 는 생성자 CONST 참조하여

    // If you intend to modify the vec_ptr_in_func 
    void func(std::vector< boost::shared_ptr <foo> >& vec_ptr_in_func){ 
    
    } 
    
    
    // If you intend to not modify the vec_ptr_in_func 
    void func(const std::vector< boost::shared_ptr <foo> >& vec_ptr_in_func){ 
    
    } 
    
  2. 패스 좋아 전달할.

관련 문제