我的代码中有很多接口,我想将重复Release
代码封装在另一个方法中,而不是宏中,因为这是 C++,我讨厌使用宏。我最初的尝试是编写一个方法,例如
void SafeRelease(IUnknown **ppInterface) {
if(*ppInterface) {
(*ppInterface)->Release();
(*ppInterface) = nullptr;
}
}
但是,将此方法应用于IDirect3DSurface9 *
例如类似会SafeRelease(&mySurface)
产生错误IDirect3DSurface9 **
与IUnknown **
.
- 我在这里做错了什么?
- 有没有更好的方法(希望不使用宏)来实现这样的功能?