Je suis en train de mettre à jour mon projet GDI + vers Direct2D. Quand je réécris mon GDI + classe à Direct2D Je suis message d'erreur lors de la compilation: erreur C2512: 'D2D1 :: ColorF': pas de constructeur par défaut approprié disponibleQuelle est la cause de: erreur C2512: 'D2D1 :: ColorF': aucun constructeur par défaut approprié disponible
Le fichier d'en-tête:
#pragma once
#include "stdafx.h"
#include <chrono>
#include <atomic>
#include "d2d1.h"
#pragma comment (lib, "d2d1.lib")
template <class T> void SafeRelease(T **ppT)
{
if (*ppT)
{
(*ppT)->Release();
*ppT = NULL;
}
}
class Direct3D_Draw
{
HWND mhWnd{};
HDC mHDC{};
PAINTSTRUCT mPS;
HBITMAP bmp{};
HGDIOBJ oldBmp{};
D2D1::ColorF frontcolor;
D2D1::ColorF backcolor;
D2D1::ColorF fontcolor;
D2D1::ColorF fontbackcolor;
public:
Direct3D_Draw(const HWND& hWnd, D2D1::ColorF _backcolor = D2D1::ColorF::White, D2D1::ColorF _frontcolor = D2D1::ColorF::Black);
~Direct3D_Draw();
};
L'implémentation:
#include "stdafx.h"
#include "Direct3D_Draw.h"
#include <random>
#include <iterator>
#include <chrono> //clock_t
//#include <Dwrite.h>
//#pragma comment (lib, "Dwrite.lib")
Direct3D_Draw::Direct3D_Draw(const HWND& hWnd, D2D1::ColorF ibackcolor, D2D1::ColorF ifrontcolor)
{
}
Direct3D_Draw::~Direct3D_Draw()
{
}
Ce n'est pas un code complet, juste une reproduction simplifiée. Visual Studio 2013 SP5 Quel est le problème? ..
Essayez de construire les couleurs de membre dans une liste d'initialisation dans le constructeur de 'Direct3D_Draw'. Ils ne fournissent pas de constructeur par défaut et requièrent des valeurs lorsque votre classe 'Direct3D_Draw' est construite. –
'Qu'est-ce qui ne va pas? 'L'erreur ne vous dit-elle pas ce qui ne va pas? Évidemment, vous ne pouvez pas créer d'objets 'D2D1 :: ColorRef' sans arguments car ce constructeur n'est pas disponible. – PaulMcKenzie