2012-11-28 32 views
0

我曝光这个C/CLI属性COM和COM仅可以接受的复杂类型引用类型属性(它不会接受指针属性)。什么是揭露一类的私有成员与参考属性中使用的最佳方法?我尝试了以下(两者不工作,因为我缺少一个指针引用,反之亦然转换的地方):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

很难猜测你所说的“参考属性”的意思。用^替换%,Object已经是引用类型。 –

+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; 
    } 
};