以下を使用する代替手段はありますか?
class IGraphBuilder;
public ref class Device
{
private:
IGraphBuilder* pGraphBuilder;
public:
void Configure()
{
pin_ptr<IGraphBuilder*> ppGraphBuilder = &pGraphBuilder;
HRESULT hr = CoCreateInstance(CLSID_FilterGraph,
NULL,
CLSCTX_INPROC,
IID_IGraphBuilder, (void**)ppGraphBuilder);
reinterpret_cast(ppGraphBuilder) はコンパイルされますが、これがこの場合に正しいかどうかは少し混乱しています。
これが C++/CLI でない場合 (&NativeMember
実際には を意味しますinterior_ptr<Type>(NativeMember)
)、単純に使用しますstatic_cast<void**>(&pGraphBuilder)
が、次のように正しくキャストしpin_ptr
た後でもコンパイルされません。
pin_ptr<IGraphBuilder*> ppGraphBuilder = &pGraphBuilder;
static_cast<void**>(ppGraphBuilder)
解決策はありますか、または pin_ptr が奇妙であるため (void**) を使用せざるを得ませんか?