Utilisation: VS2008, Win32, C/C++Comment utiliser correctement les structures dans une classe?
J'essaye d'encapsuler toute ma fenêtre de dialogue dans une classe pour la réutilisabilité. Un peu comme un contrôle personnalisé. En faisant cela, je déplace mes fonctions séparées dans une classe. La conception de structure suivante, cependant, me pose problème, avec Visual Studio en sortie: erreur C2334 '{'.
Il s'agit d'une simple disposition de carte de message. Mais je ne peux pas sembler échapper à cette erreur C2334. :(
Voici mon extrait de code de classe.
class CScrollingListDlg
{
private:
LRESULT DoCommandMain (HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam);
LRESULT DoPaintMain (HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam);
LRESULT DoAnimationTimer (HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam);
LRESULT DoHandleTouch (HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam);
LRESULT DoDestroyMain (HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam);
//
// message maps
//
// Generic defines and data types.
struct decodeUINT {
UINT Code;
LRESULT (*Fxn)(HWND, UINT, WPARAM, LPARAM);
};
struct decodeCMD {
UINT Code;
LRESULT (*Fxn)(HWND, WORD, HWND, WORD);
};
// WM_Message dispatch table for MainWndProc.
//
// *** error C2334 '{' ***
//
const struct decodeUINT MainMessages[] = {
WM_PAINT, DoPaintMain,
WM_DESTROY, DoDestroyMain,
WM_QUIT, DoDestroyMain,
WM_COMMAND, DoCommandMain,
};
};
Qu'est-ce que je manque ici?
Merci.
+ 1 Battez-moi, (bien que vous ayez besoin d'ajouter [] à la définition de tableau: const CScrollingListDlg :: decodeUINT CScrollingListDlg :: MainMessages [] = {... – Eclipse
La virgule superflue est autorisée (initializer-clause est définie en tant que liste d'initialisation suivie d'une virgule optionnelle) et pour une bonne raison: lorsque vous ajoutez une nouvelle ligne à une liste dans un tableau comme celui-ci ou une énumération, vous ne changez qu'une seule ligne. ll finira par changer deux lignes dans le contrôle de la source chaque fois que vous ajoutez un nouvel élément.C'est juste plus clair lorsque l'on regarde les diffs si seulement la ligne intéressante change – Eclipse
@Josh: Les deux bons points ne savaient pas que la virgule est permise, Merci! –