수십 개의 개인 멤버 변수가있는 클래스가 있다고 가정 해보십시오.다른 큰 클래스로 구성된 클래스 문제
class Bar
{
private:
// some instances of other classes of about the same complexity as Foo
Foo m_foo;
};
그래서 바는 기본적으로 클래스 :
class Foo
{
public:
int GetA() const { return m_a; }
:
int GetZ() const { return m_z; }
void SetA(int val) { m_a = val; }
:
void SetZ(int val) { m_z = val; }
private:
int m_a;
:
int m_z
};
이제 우리는 (다른 것들 사이에) 푸로 구성되어 두 번째 클래스를 가지고 각 멤버 변수는 공개 게터와 세터 기능이 있습니다 하나의 엔티티에서 다른 클래스의 인스턴스를 함께 바인딩합니다.
Bar의 인스턴스를 전달하는 함수는 getter 및 setter 함수를 호출 할 수 있도록 m_foo
에 액세스하려고합니다. 효과적인 C++ (제 3 판 - 항목 # 28)의 Scott Meyers 조언을 염두에두고 m_foo에 '핸들'을 반환하는 항목을 추가하는 것을 꺼립니다.
Foo& GetFoo() const { return m_foo; } // dubious const, I know
바의 모든 단일 getter 및 setter를 복제하는 것 외에 다른 옵션이 있습니까?
'm_foo'공개를하기에 충분히 게으른 일부 기존 코드로 작업하고 있습니다! 그러나 Scott의 조언 (이 경우 항목 # 22 - "데이터 멤버를 비공개로 선언")과 다른 점이 있습니다.
이 바인딩에서 벗어날 수 있습니까?
const가 불투명 할뿐만 아니라 잘못되었습니다. m_foo는 해당 메소드의 컨텍스트에서 const가됩니다. –