In een bestaande interface wordt het volgende gedefinieerd:
Deze interface wordt enerzijds gebruikt door VB programma, en ik wil hem implementeren in een C++ programma. Echter hoe kan ik bv HRESULT Count([out, retval] long*) implenteren?
STDMETHODIMP Class1::Count(/*[out, retval]*/ long*)
{
int i = this->vList.size(); // size of vector in C++
// Hier moet de return waarde gezet worden:
// normaal: *long value = i;
// maar nu kan alleen: *long = i;
// Hoe gaat C++ om met deze notatie?
return S_OK;
}
Code:
interface ICollection : IDispatch
{
[helpstring("method Initialize")]
HRESULT Initialize([out, retval] VARIANT_BOOL* blnSuccess);
[helpstring("Reference an element in the collection."),
id(DISPID_VALUE),
propget]
HRESULT Item([in, out] VARIANT* vntIndexKey, [out, retval] IItem** objItem);
[helpstring("Retrieve the number of elements in the collection."),
id(0x60030101),
propget]
HRESULT Count([out, retval] long*);
[helpstring("Enumerate this collection with the For...Each syntax."),
id(DISPID_NEWENUM),
propget,
hidden]
HRESULT NewEnum([out, retval] VARIANT*);
};
Deze interface wordt enerzijds gebruikt door VB programma, en ik wil hem implementeren in een C++ programma. Echter hoe kan ik bv HRESULT Count([out, retval] long*) implenteren?
STDMETHODIMP Class1::Count(/*[out, retval]*/ long*)
{
int i = this->vList.size(); // size of vector in C++
// Hier moet de return waarde gezet worden:
// normaal: *long value = i;
// maar nu kan alleen: *long = i;
// Hoe gaat C++ om met deze notatie?
return S_OK;
}