Wie definiert man einen Funktionszeiger, der auf eine statische Elementfunktion zeigt?

#include "stdafx.h"

class Person;
typedef void (Person::*PPMF)();

//error C2159: more than one storage class specified
typedef static void (Person::*PPMF2)();  

class Person
{
public:
    static PPMF verificationFUnction()
    { 
        return &Person::verifyAddress; 
    }

    //error C2440: 'return' : cannot convert from 
    //'void (__cdecl *)(void)' to 'PPMF2'
    PPMF2 verificationFUnction2()               
    { 
        return &Person::verifyAddress2; 
    }
private:
    void verifyAddress() {}

    static void verifyAddress2() {}
};

int _tmain(int argc, _TCHAR* argv[])
{
    Person scott;

    PPMF pmf = scott.verificationFUnction();
    (scott.*pmf)();
    return 0;
}

Frage: muss ich eine Funktion definieren, die Zeiger PPMF2 zu zeigen, um eine statische member-Funktion verifyAddress2. Wie kann ich es tun?

#include "stdafx.h"

class Person;
typedef void (Person::*PPMF)();
typedef void (Person::*PPMF2)();

class Person
{
public:
    static PPMF verificationFUnction()
    { 
        return &Person::verifyAddress; 
    }
    PPMF2 verificationFUnction2()
    { 
        return &Person::verifyAddress2; 
    }
private:
    void verifyAddress() {}

    static void verifyAddress2() {}
};

int _tmain(int argc, _TCHAR* argv[])
{
    Person scott;

    PPMF pmf = scott.verificationFUnction();
    (scott.*pmf)();

    return 0;
}

InformationsquelleAutor der Frage q0987 | 2011-03-31

Schreibe einen Kommentar