bonjour

voila j'ai donc un pb avec les pointeurs sur fonction.
J'ai commencé par définir le type suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
typedef void (*fcnWrite)(std::string strMessage,int nType);
puis j'ai ensuite créé la classe suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
class __declspec(dllexport) CLogger
    {
    private:
        fcnWrite    m_pWrite;
 
   .....................................
 
    // Sets
    public:
        void SetWriteFunction(fcnWrite Write);
 
    };
la méthode SetWriteFunction affecte tout bêtement la fonction passé en paramètre à la variable membre "m_pWrite"


voici comment j'utilise la classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
void CTestUtilsDlg::OnOk()
{
    CLogger log;
    log.SetWriteFunction(Write);
}
avec pour méthode Write suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
void CTestUtilsDlg::Write(std::string strMessage, int nType)
{
    CString test = strMessage.c_str() ;
    m_edittest.SetWindowText(test);
}

Enfin voici l'erreur qui est générée :
C:\sebastien\project\testUtils\testUtilsDlg.cpp(182) : error C2664: 'SetWriteFunction' : cannot convert parameter 1 from 'void (class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int)' to 'void (__cdecl *)(class
std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int)'
None of the functions with this name in scope match the target type
est ce quelqu'un saurait d'où cela vient ? car moi je suis complètement perdu la :s