2012-02-07 1 views
1

다른 클래스의 메서드를 호출하여 "this"를 사용하여 MyClass의 개체 참조를 전달하려고합니다."this"를 매개 변수로 사용하여 shared_ptr을 전달하고이를 변수에 저장하십시오.

myObject = MyClassRef(new MyClass()); 

그래서 내가 ReceiverClass에있는 것으로 someMethod()를 정의해야하는 수신 "이"

이 내가 내 주요 응용 프로그램 내가 대상이 방법을 만들 MyClass에이

typedef boost::shared_ptr<class MyClass> MyClassRef; 

class MyClass { 
    //bla bla bla 
}; 

MyClass::method(){ 
    someObject->someMethod(this); //this object is from the ReceiverClass 
} 

을 정의하는 방법이다 param으로 저장 한 다음 멤버 변수에 저장 하시겠습니까 ?? 의사 코드에서

나는 ... 그것은이 같은 것

class ReceiverClass { 
    public: 
    void someMethod(shared_ptr param); 
    shared_ptr mReference; 
}; 

ReceiverClass::someMethod(shared_ptr param){ 
    mReference = param; 
} 

생각 ...하지만 난 완전히 잃었어요.

+2

boost :: enable_shared_from_this. – Lalaland

+0

현재 가지고있는 문제는 무엇입니까? – Chip

+0

문제는 어떻게해야할지 모릅니다. – Pier

답변

1

Ethan Steinberg가 암시 한 것처럼 MyClass는 boost :: enable_shared_from_this (또는 컴파일러에서 사용할 수있는 표준에 따라 std :: tr1 또는 std 버전)에서 상속받습니다. 그런 다음 someObject-> someMethod (shared_from_this())로 메소드를 호출하십시오.

shared_from_this()는 찾고자하는 것으로 보이는 호출 객체에 shared_ptr을 반환한다는 개념입니다.

+0

MyClass는 이미 다른 클래스에서 상속 받고 있습니다. (예에서 알지 못합니다.) – Pier

+1

@Pier : C++에서는 더 많은 기본 클래스를 상속받을 수 있습니다. – stefaanv

관련 문제