-1
다른 클래스의 클래스 인스턴스를 얻고 싶습니다.다른 클래스의 속성과 동일한 클래스 인스턴스 얻기
나는 A
클래스가 개인 회원으로 B
개체를 갖는 다음과 같은 클래스가 있습니다.
class A
{
private:
B my_B;
public:
B getBInstance (void)
{
return this->my_B;
}
}
class B
{
private:
int my_attr;
public:
B()
{
this -> my_attr = 0; //Initial value for my_attr
}
void setMyAttr (int attr)
{
this->my_attr = attr;
}
int getMyAttr (void)
{
return this->my_attr;
}
}
나는
my_B
클래스
A
에서 인스턴스화 된 객체에 독점되고 싶어요.
다음을 수행 할 때마다 인스턴스에 액세스 할 때마다 A::getBInstance()
을 호출하기 때문에 my_attr의 내용을 변경할 수 없습니다. 대답은 그리 명확 경우
A new_A;
new_B = new_A.getBInstance();
new_B.setMyAttr (50);
printf ("%d\n", newB.getMyAttr()); //Prints 50
내가 사과 : 다음과 같은 처리를 할 경우
A new_A;
new_A.getBInstance().setMyAttr(50);
printf ("%d\n", new_A.getBInstance().getMyAttr()); //Prints 0
하지만, 나는 올바른 출력을 얻을. 정적이거나 싱글 톤 패턴을 만드는 것에 대한 노력이 도움이 될지도 모르겠지만, 이런 종류의 구현에 익숙하지 않기 때문에 몇 가지 지침이 필요합니다. 사전에
덕분에,
"독점권"이란 무엇을 의미합니까? 그리고 이것은 싱글 톤과 어떤 관련이 있습니까? – StoryTeller
문제는 예제로 설명됩니다. private 멤버 클래스에 액세스하는 두 가지 방법은 다른 결과를 제공합니다. 두 가지 방법으로 올바른 결과를 얻을 수 있기를 바랍니다. 싱글 톤은 하나의 인스턴스를 가진 클래스이기 때문에, 나는 확신 할 수는 없지만, 그 방향으로의 구현이 도움이 될 것이라고 생각했다. – mozcelikors
당신은'my_B' 사본을 돌려줍니다. 'A'에 저장된 값을 변경하려면 참조를 반환하십시오. – 1201ProgramAlarm