2014-03-27 2 views
0

수업과 개인 및 공공 업무에 대한 내용을 읽었지만 아직 구현 방법에 대해 잘 모르겠습니다.기본에서 비공개로 값을 전달하는 방법

내가하려는 것은 행과 열에 대해 사용자 정의 된 기본 클래스에서 2 개의 정수를 전달하는 것입니다. 그런 다음 행과 열을 사용하여 2 차원 배열은 0부터 row * column-1까지의 정수로 채워지고 private 내부 함수에 저장됩니다.

마지막으로 공개 기능에 의해 초기화됩니다.

제 질문은 어떻게 정수에서 2 정수를 전달합니까? 대중에게 그렇게 할 수있는 기능을 만들어야합니까? 그렇다면 어떻게?

#include <vector> 

class Example { 

public: 

    void displayArray() { 
     for (int row = 0; row < T_array.size(); ++row) { 
      for (int col = 0; col < T_array[row].size(); ++col) { 
      // print stuff 
      } 
     } 
    } 

private: 

void fillArray(int rows, int columns) { 
    T_array.resize(rows); 
    for (int row = 0; row < rows; ++row) { 
     T_array[row].resize(columns); 
     for (int col = 0; col < columns; ++col) { 
      T_array[row][col] = ... 
     } 
    } 
} 

std::vector<std::vector<int>> T_array; // Nested vector for 2D 

}

답변

0

내 문제는 내가 비공개로 주에서 2의 정수를 전달 어떻게입니까? 대중에게 그렇게 할 수있는 기능을 만들어야합니까?

public 예, 클래스 멤버 함수를 main()에서 호출 할 수 있도록해야합니다.

그렇다면 어떻게됩니까? (이 우려 할 필요가있는 경우) 귀하의 멤버 변수가 있지만 private을 유지할 수

public: // Or just omit the private 

void fillArray(int rows, int columns) { 
    // ... 
} 

과 같이

:는 동일한의 방법으로 수정할 수

private: 
    std::vector<std::vector<int>> T_array; // Nested vector for 2D 
0

개인 데이터 콘 선택할 수있는 클래스는 다음과 같습니다.

  • 구현 값을 채우는 private 메서드 ... 그러나이 private 메서드는 같은 클래스의 다른 메서드에서 호출해야 함
  • 값을 채우는 보호 된 메서드를 구현하지만 동일한 메서드에서이 보호 된 메서드를 호출해야합니다. 클래스 또는 파생 클래스에서 가져옵니다.
  • 값을 채우는 공용 메서드를 구현하십시오. 음,이 방법은 어디서든 호출 할 수 있습니다.

선택 사항은 나머지 코드의 구조에 따라 결정됩니다.

+0

답장을 보내 주셔서 대단히 감사합니다. 내 솔루션을 구현하는 방법을 지금 알고 있다고 생각합니다. – user3469603

0

클래스 외부에서 비공개 클래스 멤버에 액세스 할 수 없습니다. 비공개 클래스입니다. (내가 아는, 친구,하지만 여기에 적용되지 않습니다 수 있습니다.)

을 그래서 당신은 당신이 당신의 마음을 위로하기 위해이 클래스를 정의 할 때 :

이 멤버는 클래스 외부에서 액세스 할 수 있어야합니다을? -> 대중에게 공개하십시오.

-> 비공개 인 경우.

관련 문제