Problème d'utilisation d'un Fonction déclarée dans un .cpp différent.

Résolu
Valentintinmar Messages postés 15 Date d'inscription jeudi 4 juin 2009 Statut Membre Dernière intervention 21 août 2009 - 20 août 2009 à 17:20
Valentintinmar Messages postés 15 Date d'inscription jeudi 4 juin 2009 Statut Membre Dernière intervention 21 août 2009 - 21 août 2009 à 09:11
Bonjour à tous,

Je travaille sur un programme dévellopé sur Visual C++ en unicode, le programme est construits avec plusieurs .cpp et plusieurs .h

Je souhaiterai qu'à la fermeture de mon programme, il utilise la fonction de sauvegarde de données.

Dans AppOPCClient.cpp
ma fonction est définie ainsi :
void CAppOPCClientApp::OnItemExport()
{
...
Procédure de sauvegarde
...
}

Et elle est déclarée dans AppOPCClient.h de la manière suivante :
public:
//{{AFX_MSG(CAppOPCClientApp)
afx_msg void OnItemExport();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()


à la fermeture de mon programme, dans MainFrm.cpp

void CMainFrame::OnClose()
{
if (bNew==true)
{
CString pit1="The item list has been changed, would you like to Save it before closing ?";
CString pit2="Warning";
//MessageBox(pit1,pit2,MB_OKCANCEL);
if (MessageBox(pit1, pit2, MB_OKCANCEL)== IDOK)
{
CAppOPCClientApp::OnItemExport();
}
}


bool bStop = StopTimer(IDT_TIMER_SCREEN_REFRESH);
if (false==bStop)
TRACE(_T("Failed to stop Refresh Timer"));
bStop = StopTimer(IDT_TIMER_READ_MODE);
if (false==bStop)
TRACE(_T("Failed to stop Read Timer"));

CFrameWnd::OnClose();
}

à la complation j'obtiens alors l'erreur suivante :
error C2352: 'CAppOPCClientApp::OnItemExport' : appel non conforme d'une fonction membre non static, voir la déclaration de 'CAppOPCClientApp::OnItemExport'

Je suis débutant (ce qui n'est pas une excuse) mais même en fouillant sur les différents forums/faq je n'arrive pas à obtenir un résultat convaincant, toute aide est donc la bienvenue ^^

2 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
20 août 2009 à 21:31
La fonction que tu souhaites appeler n'est pas statique, elle est associée à une instance de classe particulière; tu crées bien quelque part une instance de CAppOPCClientApp, alors c'est cet objet qu'il faut utiliser pour appeler la fonction.
C'est un problème de cohérence : tu essaies d'appeler une fonction qui travaille avec des données membres de classe, mais sans lui dire sur quel objet travailler.
3
Valentintinmar Messages postés 15 Date d'inscription jeudi 4 juin 2009 Statut Membre Dernière intervention 21 août 2009
21 août 2009 à 09:11
Merci, ça m'a permis de recadrer mes recherches, ce n'est pas évident de travailler à partir d'un programme conçu par d'autres ^^
0
Rejoignez-nous