2012-09-27 3 views
3

클래스 B와 클래스 A를가집니다. 클래스 B의 메소드 (이름을 foo()로 지정) 클래스 A의 로컬 객체를 정의했습니다. 클래스 A에서 메소드 B 객체를 가져 왔습니다. 클래스 B의 메소드에서 객체가 로컬 일 때 B 객체를 클래스 A의이 메소드로 전달하는 방법?개체를 로컬 개체 메서드에 전달하는 방법은 무엇입니까?

class B { 
public: 
    void foo() 
    { 
    A a; 
    a.bar(???); // want to pass B object? 
    } 
}; 

class A { 
public: 
    void bar(B& b) 
    { 
    ... 
    } 
}; 

답변

5

임시을 통과하려면

B b; 
a.bar(b); 

을 수행해야 A::foo을 다음으로 수정하십시오 :

void bar(const B& b) 

다음 직접 전달하십시오 :

a.bar(B()); 
4

this 포인터는 멤버 함수가 호출 인스턴스를 가리키는, 당신이 필요로하는 것입니다. 다른 인스턴스를 원하는 경우

a.bar(*this); 

: 당신이 B의 현재 인스턴스를 전달하려는 경우

a.foo(*this); // dereference since 'this' is a pointer 
관련 문제