具有以下功能:
virtual HRESULT GetMediaType(
int iPosition,
CMediaType *pMediaType
);
如何调用它以便通过引用传递pMediaType并保留对方法中对象所做的一切?
答案 0 :(得分:5)
因为您将对象作为指针提供给函数,所以保留了对方法中对象所做的一切。
您可以通过以下方式调用它:
CMediaType pMediaType;
GetMediaType( 0, &pMediaType );
答案 1 :(得分:0)
你现在拥有它:
在这样的代码中virtual HRESULT GetMediaType( int iPosition, CMediaType *pMediaType );
:
CMediaType mediaType;
...GetMediaType(position, &mediaType);
您在pMediaType
正文GetMediaType()
内所做的任何内容都是“保留”在呼叫网站上,因为您将指针传递给{ {1}}。
但是,如果要在mediaType
正文中创建CMediaType
的新实例,并将其作为输出指针值返回,调用者必须在使用后以某种方式释放(类似于COM {{ 1}}),然后你可以使用双间接指针,例如
GetMediaType()
使用示例:
IUnknown::QueryInterface()
无论如何,尝试应用KISS规则,保持代码尽可能简单(如果可以的话,避免使用双重间接指针)。