そのため、デスクトップ複製 API を使用するアプリを開発していますが、IDXGIDevice
インターフェイスを使用してそのメソッドにアクセスしようとするとgetParent
、次のエラーが発生します。
クラス "IDXGIDevice" にはメンバー "GetParent" がありません
このようにヘッダーファイルとスコープ解決演算子を使用する場合
DDAPI.h
#include <d3d11.h>
#include <dxgi1_2.h>
class DDAPI
{
public:
HRESULT InitDDA();
private:
ID3D11Device* m_Device;
}
DDAPI.cpp
HRESULT DDAPI::InitDDA()
{
IDXGIDevice* pDevice = nullptr;
IDXGIAdapter* pAdapter = nullptr;
m_Device->QueryInterface(__uuidof(IDXGIDevice), (void**)&pDevice);
pDevice->GetParent(__uuidof(IDXGIAdapter), (void**)&pAdapter); // Errors Here
}
(私はすでに ID3D11Device m_Device を初期化しています)
ただし 、このように DDAPI.cpp ファイル内にクラスを作成した場合、それは機能し、エラーは発生しません
class DDAPI
{
ID3D11Device* m_Device;
HRESULT InitDDA()
{
IDXGIDevice* pDevice = nullptr;
IDXGIAdapter* pAdapter = nullptr;
m_Device->QueryInterface(__uuidof(IDXGIDevice), (void**)&pDevice);
pDevice->GetParent(__uuidof(IDXGIAdapter), (void**)&pAdapter);
}
};
最初の例では、IntelliSense は他のすべてのメソッドを表示しませんIDXGIDevice
(基本 IUnknown インターフェイス メソッドを含むだけです) が、2 番目の例では表示されます
ビルド エラーがないため、これは単なる IntelliSense エラーである可能性がありますが、エラーとして表示される場合は、別の方法でこれを実行できることを意味すると思います。