member function pointer

Status
Niet open voor verdere reacties.

Murdocki

Gebruiker
Lid geworden
7 jun 2007
Berichten
449
hey. dit is de code die ik heb maar op een of andere manier herkent hij de DrawPixel functie niet. "onnodige" code weggelaten uiteraard

Code:
*.h
class CEVideo
{
    public:
        bool Initialize( int );
        void (CEVideo::*DrawPixel)(int, int, int, int, int);
        void DrawPixel16Bit(int, int, int, int, int);
        void DrawPixel32Bit(int, int, int, int, int);
  };


*.cpp
bool CEVideo::Initialize( int screenBPP )
{
     switch(screenBPP )
     {
        case 16:
            DrawPixel = &CEVideo::DrawPixel16Bit;
        break;
        case 32:
            DrawPixel = &CEVideo::DrawPixel32Bit;
        break;
        default: 
            return false;
    }
}


main.cpp
CEVideo Video;
(Video->*DrawPixel)( 10, 10, 255, 255, 255 );//<-deze werkt niet

wat dev-cpp nou zegt is dit:

`DrawPixel' undeclared (first use this function)

iemand enig idee wat ik fout doe?
 
Ik denk dat het probleem hier zit:
Code:
CEVideo Video;
(Video->*DrawPixel)( 10, 10, 255, 255, 255 );//<-deze werkt niet

Dit is hetzelfde als
Code:
CEVideo Video;
((*Video).*DrawPixel)( 10, 10, 255, 255, 255 );

Dit werkt dus alleen als Video een pointer is. Dat is hij in dit geval niet.
Overigens heb ik ook zo mijn twijfels over het sterretje voor de functie aanroep.
 
aangezien DrawPixel een pointer is staat het sterretje in dit geval voor "data in". wat dus inhoud dat hij niet DrawPixel aanroept maar de functie waar DrawPixel heen wijst

een stukje code van codeproject:

Code:
declaratie:
float (SomeClass::*my_memfunc_ptr)(int, char *);
// For const member functions, it's declared like this:
float (SomeClass::*my_const_memfunc_ptr)(int, char *) const;

initialisatie:
 my_memfunc_ptr = &SomeClass::some_member_func;
 // This is the syntax for operators:
 my_memfunc_ptr = &SomeClass::operator !;
 // There is no way to take the address of a constructor or destructor

gebruik:
  SomeClass *x = new SomeClass;
  (x->*my_memfunc_ptr)(6, "Another Arbitrary Parameter");
// You can also use the .* operator if your class is on the stack.
  SomeClass y;
  (y.*my_memfunc_ptr)(15, "Different parameters this time");

naar mijn idee doe ik alles precies hetzelfde
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan