2013-10-06 1 views
0

함수 호출을 통해 다른 클래스의 벡터에 대한 포인터에 벡터를 전달하고받는 클래스를 통해 함수 또는 요소를 호출하는 방법. 수신 클래스에서 해당 함수를 원격으로 호출하는 방법은 무엇입니까?개체의 벡터를 다른 클래스에 전달하고 해당 벡터의 개체 멤버 내에서 함수를 호출하는 방법은 무엇입니까?

이 예제에서 object0은 호출 할 함수가 들어있는 객체 유형입니다.

Object0에 Object0이 벡터의 구성원으로 만들어집니다.

그러면 벡터가 object2로 전달되어 외부 객체에서 호출됩니다. 여기서는 임의로 object1 내에서 선택됩니다.

main()은이 응용 프로그램을 부팅하는 방법 일 뿐이며이를 개선하기위한 제안을 환영합니다.

#include <vector> 
class object0 
{ 
protected: 
    int a; 
    void function() 
    { 
     std::cout << "function called" << std::endl; 
    } 
}; 

class object2 
{ 
    public: 
    std::vector<object0> *object0vec; 
    void knowvector(std::vector<object0> *_object0vec) 
    { 
     object0vec = _object0vec; 
    } 
}; 

class object1 
{ 
public: 
    object2* _object2; 
    object1() 
    { 
     _object2 = new object2; 
    } 
    void init() 
    { 
     std::vector<object0> object0vec; 
     object0vec.push_back(new object0) 
     _object2.object0vec[0].function(); 

이 줄을 작동시키는 방법은 무엇입니까? _object2.object0vec [0] .function(); INIT에서

} 
}; 
int main() 
{ 
    object1 newobject1; 
    object1 &ref_newobject1 = newobject1; 
    ref_newobject1.init(); 
} 
+0

'knowvector'를 사용하여'object0vec '를'_object2'에 넣는 것을 잊었습니다. 그러나이 전체 코드는 여러 수준에서 잘못되었습니다 ... – BartoszKP

답변

0

()

"_object2"는 오브젝트 1과 동일한 유효 기간을 갖는다. 그러나 init()에서 로컬 변수 object0vec에 대한 포인터를 knowvector()에 전달합니다. 이제 "_object2"는 객체를 소유 한 객체보다 수명이 길지만 소유하지는 못합니다. "knowvector"는 포인터를 유지하는 대신 벡터 사본을 만들 수 있습니다.

구문 : -> 당신이 사용해야하므로 초기화()에서

는 "_object2은"포인터입니다.

object2 :: object0vec도 포인터입니다. "object0vec [0]"은 벡터의 첫 번째 객체가 아닌 첫 번째 객체를 가져 오는 것입니다.

_object2 -> (*object0vec)[0].function(); 
관련 문제