I am working on code that needs to send a member function pointer to a logger method that accepts a void * as the parameter. I cannot change it from void *. I cannot use c++11 either. Is there a way to get it to work without any warning. For example:
logger.h
    #ifndef _LOGGER_H
    #define _LOGGER_H
    void logger( void *func );
    #endif /* _LOGGER_H */
logger.cpp
    #include <cstdio>
    #include "logger.h"
    void logger( void *func )
    {
        printf("%lx\n", (unsigned long)func);
    }
testCase.cpp
    #include "logger.h"
    class myClass
    {
        public:
            void testCase( void );
    };
    void myClass::testCase( void )
    {
        /* This works on my compiler, but gives warning */
        /* warning: converting from 'void (myClass::*)()' to 'void*' */
        /* I know this is bad and wrong. */
        logger((void *)&myClass::testCase);
        /* This compiles without warning */
        /* But doesnt work the way I need, gives ffff*/
        void (myClass::*ptr)( void ) = &myClass::testCase;
        void *m_ptr = ptr;
        logger(m_ptr);
    }
logger.h and logger.cpp cannot be changed.
This is being run a VxWorks and I need the address to look up in the symbol table. When I try the second way I get ffff. Although I get a real address when using other compilers, its different for VxWorks.
Can you think of another way to get this to work.
 
     
     
    