2014-02-22 3 views
0

저는 기본적으로 두 개의 클래스를 사용하여 소매 환경을 시뮬레이션하는 C++ 프로젝트에서 작업하고 있습니다. 지금까지 모든 것이 순조롭게 진행되었지만, C++을 오랫동안 사용하지 않았기 때문에이 배열이 어떻게 작동하는지에 관해서는 다소 혼란 스럽습니다. 인 CustomerOrder가되고 (null에 대한 포인터의 개인 배열 초기화

//Customer.h 
private: 
    std::array< CustomerOrder *, 3 > orderList; 

기본적 배열 비공개로 Customer.h 파일 선언하지만 Customer.h 및 Customer.cpp 파일은 CustomerOrder를 포인터를 추가하는 방법

addOrder(CustomerOrder *c) 

제공 다른 클래스)를 배열에 추가합니다. 필자의 경험에 비추어 볼 때이 논리는 매우 간단하다. for 루프를 사용하여 널 포인터를 포함하는 첫 번째 인덱스를 찾은 다음 해당 인덱스에 포인터를 삽입한다.

문제는 처음에 배열을 null 포인터로 초기화하는 것이고, 어떻게 또는 어떤 파일을 사용해야하는지 잘 모르겠습니다. 배열이 개인이기 때문에, 나는 내가/마 I 수

for(size_t i = 0; i < orderList.size(); ++i) 
    orderlist[i] = nullptr; 

또는

orderlist[3] = {nullptr} 

의 라인을 따라 뭔가를 사용하여 .H 파일을 초기화 할 필요에서이 작업을 수행했다고 가정 할 .h 파일? 그리고 배열을 초기화하는 더 신뢰할 수있는 방법이 있습니까?

아무런 차이가없는 경우 참조 용으로 C++ 11 표준을 사용하고 있습니다.

답변

1

이 데이터 멤버가 비공개 인 경우 생성자 또는 초기화 할 일부 멤버 함수에서 초기화 할 수 있습니다.

배열의 모든 요소를 ​​nullptr로 설정하려면 std::array 클래스의 멤버 함수 fill을 사용할 수 있습니다. 예를 들어

orderlist.fill(nullptr); 
1

생성자를 사용하면 실행 파일 코드가 h 파일에 있어야하는 것은 아닙니다.
그리고 :하지 마십시오 orderlist[3] = {nullptr} 3 크기의 배열에.
indizes 0,1,2 만 있습니다. 루프가 훨씬 좋습니다.

관련 문제