Обертка для С++ класса. Нужен пример.
От: Цунцуяби Россия  
Дата: 02.10.02 09:12
Оценка:
У меня есть проект в котором имеется некоторая иерархия классов.


class Ycl
{
    int value;
public:
...
    int GetValue(void){return value;}
    void SetValue(int nv){value=nv;}
};

class Xcl
{
    Ycl *y;
...
public:
    Ycl &Item(int i){return y[i];}
};


В С++ я могу написать так



Xcl x;
x.Item(1).SetValue(10);


Мне необходима обертка (COM,ATL)
чтобы я мог также писать и в VB


x.Item(1).value=10


Не поможет ли кто с примером ?

Пробовал написать по примерам с ATL, но я пока не понимаю всю картину вцелом
и поэтому смущает, что каждый раз когда я вызываю метод Item
у меня каждый раз создается и инициализируется объект


STDMETHODIMP CComXcl::Item(short n, LPDISPATCH *retval)
{
    CComObject<CComYcl>* p = new CComObject<CComYcl>;
    p->DoNotForgetInitItem();
    IDispatch* pDisp;
    HRESULT res=p->QueryInterface(IID_IDispatch, (void**)&pDisp);
    if (res != S_OK) return E_POINTER;
    *retval = pDisp;
    return S_OK;
}


Может быть его надо где-то сохранять ?

А вообше у меня получается


o1=x.Item(1)
o2=x.Item(1)

o1.value=1
o2.value=2


o1.value != o2.value

что-то видно делаю не так, а ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.