「適切なデフォルトコンストラクターがありません」というエラーに問題があります。おそらく、欠けているのはほんの1つです。私は C++ にかなり慣れていませんが、ゆっくりと理解しています。
私が理解しているように、コンストラクターを指定しない場合、C++ はデフォルトのコンストラクターを作成します。ただし、コンストラクターを指定していないにもかかわらず、エラーが発生します。私はこれに対する解決策をグーグルで試しましたが、他の誰もがクラスを間違って拡張しているか、指定されたコンストラクターを持っているため、このエラーが発生します。コンストラクターを指定していませんが、とにかくこのエラーが発生します。DirectXGame クラスは以下のとおりです。
DirectXGame.h
#include "StdAfx.h"
#include "DirectInputHelper.h"
class DirectXGame
{
public:
//DirectXGame();
bool Initialize(HINSTANCE hInstance, HWND windowHandle);
void ShutDown();
bool LoadContent();
void UnloadContent();
void Update(float timeDelta);
void Render();
private:
HINSTANCE progInstance;
HWND winHandle;
D3D_DRIVER_TYPE driverType;
D3D_FEATURE_LEVEL featureLevel;
ID3D11Device* pDev;
ID3D11DeviceContext* pDevContext;
ID3D11RenderTargetView* pBackBufferTarget;
IDXGISwapChain* pSwapChain;
DirectXInput::DirectInputHelper inputHelper;
DirectXInput::KeyboardState* keyboardDevice;
DirectXInput::MouseState* mouseDevice;
bool isShutDown;
};
コメントアウトされているため、コンストラクターを指定していないことに注意してください。実際のエラーは、クラスの新しいインスタンスを作成するメイン メソッドの行でスローされます。
DirectXApp.cpp
int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow )
{
UNREFERENCED_PARAMETER( hPrevInstance );
UNREFERENCED_PARAMETER( lpCmdLine );
if( FAILED( InitWindow( hInstance, nCmdShow ) ) )
return 0;
//std::auto_ptr<DirectXGame> DirectXGame( new DirectXGame() );
DirectXGame* game = new DirectXGame(); //The compile error is on this line.
bool result = game->Initialize(g_hInst, g_hWnd);
if(!result)
{
game->ShutDown();
return -1;
}
// Main message loop
MSG msg = {0};
while(TRUE)
{
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
if(msg.message == WM_QUIT)
break;
}
else
{
game->Update(0.0f);
game->Render();
}
}
game->ShutDown();
//Don't forget to delete the game object, as it is a pointer.
delete game;
return static_cast<int>(msg.wParam);
}
C++ で注意を払わなければならない多くの細かい点の 1 つが欠けているだけかもしれません。