2012-11-28 2 views
0

이 C++/CLI 속성을 COM에 노출하면 COM은 복잡한 유형의 참조 유형 속성 만 허용 할 수 있습니다 (포인터 속성을 허용하지 않음). 클래스의 private 멤버를 참조 속성과 함께 사용하는 가장 좋은 방법은 무엇입니까? 나는 다음 (내가 참조하거나 어딘가에 그 반대의 변환에 대한 포인터를 놓치고 있기 때문에 모두가 작동하지 않습니다) 시도 :C++/CLI 참조 속성

private: 
    Object _myProp; 
public: 
property Object %MyProp { 
    virtual Object %get() 
    { 
     return _myProp; 
    } 
    virtual void set(Object %value) 
    { 
     _myProp = value; // this line doesn't work 
    } 
}; 

그리고 나는이 시도 :

private: 
    Object ^_myProp; 
public: 
property Object %MyProp { 
    virtual Object %get() 
    { 
     return _myProp; // this line doesn't work 
    } 
    virtual void set(Object %value) 
    { 
     _myProp = %value; 
    } 
}; 

내가 잘못하고있는 중이 야 무엇을 여기 (참조 속성을 사용해야 함)?

+0

를 사용하는 것을 발견했다. % by ^를 대체하십시오. 객체는 이미 참조 유형입니다. –

+0

한스, COM에서는 작동하지 않습니다. http://stackoverflow.com/questions/12976506/c-sharp-property-exposed-to-vba-com-run-time-error-424-object-required. 참조 속성이어야하며 포인터 하나가 작동하지 않습니다. – Adam

+0

재산에서 작동하지 않습니다. 이 문제는 다음에서 설명합니다. http://stackoverflow.com/a/9924325/17034 –

답변

0

내가 _myProp를 반환하는 "^"를 사용하려고했다, 나는 당신이 "참조 속성"가 무슨 뜻인지 추측 "*"하드

private: 
    Object ^_myProp; 
public: 
property Object %MyProp { 
    virtual Object %get() 
    { 
     return *_myProp; // this line NOW works 
    } 
    virtual void set(Object %value) 
    { 
     _myProp = %value; 
    } 
};