2017-08-06 3 views
0

J'ai essayé de raccourcir un code étranger. J'ai pensé que je pourrais sauver une variable.C++ non correct non requis re-déclaration de la variable membre de la classe MFC solution/projet fait main MS VS 2015

Le code suivant est OK et affiche un cadre Windows.

#include <afxwin.h> 
// from source: http://www.codersource.net/2010/01/30/mfc-tutorial-part-1/ 
class MFC_Tutorial_Window :public CFrameWnd 
{ 
public: 
    MFC_Tutorial_Window()  
    { 
     Create(NULL, "MFC Tutorial Part 1 CoderSource Window"); 
    } 
}; 

class MyApp :public CWinApp 
{ 
    MFC_Tutorial_Window *wnd; 

public: 
    BOOL InitInstance() 
    { 
     wnd = new MFC_Tutorial_Window(); 
     m_pMainWnd = wnd;       
     m_pMainWnd->ShowWindow(1); 
     return 1; 
    } 
}; 

MyApp theApp; 

Après ma reformulation, elle ne fonctionne plus. Aucune erreur de construction. Mais il ne montre pas de cadre.

#include <afxwin.h> 
// from source: http://www.codersource.net/2010/01/30/mfc-tutorial-part-1/ 
// and changed by me 

class MFC_Tutorial_Window :public CFrameWnd 
{ 
public: 
    MFC_Tutorial_Window() 
    { 
     Create(NULL, "MFC Tutorial Part 1 CoderSource Window"); 
    } 
}; 

class MyApp :public CWinApp 
{ 
    // del MFC_Tutorial_Window *wnd; 
    MFC_Tutorial_Window *m_pMainWnd; // ins 


public: 
    BOOL InitInstance() 
    { 
     // del wnd = new MFC_Tutorial_Window(); 
     // del m_pMainWnd = wnd; 
     m_pMainWnd = new MFC_Tutorial_Window(); // ins 
     m_pMainWnd->ShowWindow(1); 
     return 1; 
    } 
}; 

MyApp theApp; 

Quel est le problème?

+1

Ne pas déclarer à nouveau la variable 'm_pMainWnd'? Je ne peux pas voir sa déclaration dans le premier code, alors pourquoi créez-vous la variable membre 'm_pMainWnd' dans le deuxième exemple? Juste essayer de supprimer la ligne 'MFC_Tutorial_Window * m_pMainWnd;' –

+0

Maintenant, cela fonctionne. Merci pour l'indice. Maintenant, je peux comprendre ce comportement. – CarpeDiemKopi

+0

Np mate, heureux que cela ait aidé. Je l'ai juste posté dans les commentaires afin que vous puissiez marquer ce fil comme anwered, salutations :) –

Répondre

1

Le problème est dans la redéclaration de la variable membre MFC_Tutorial_Window *m_pMainWnd;, sans cette ligne cela va fonctionner.