2014-01-02 1 views
0

По какой-то причине мне приходится вызывать метод класса из другого метода того же класса с помощью указателя функции. Это и пример кода, который иллюстрирует мой вопрос:Метод одного класса вызывает другой с помощью указателя функции

class testClass 
{ 
.... 
private: 
void method(int parameter) { 
    ..... 
}; 
void callingMethod(); 
}; 
typedef void (testClass::*classMethod)(int parameter); 

void testClass::callingMethod() { 
    classMethod method = &testClass::method; 
    method(1); 
} 

Я получаю ошибку компиляции

ошибка C2064: термин не вычисляется функция принимает 1 аргументов.

Каков правильный метод для таких вызовов?

+0

возможно дубликат [Функция C++ Вызов Указатель на член] (http://stackoverflow.com/questions/14814158/c-call-pointer-to-member-function) – jogojapan

+0

Я так думаю, просто не могу найти синтаксис записи для этого конкретного случая. – user3013778

ответ

0

Ваш синтаксис является правильным, за исключением, что вместо

method(1); 

вы должны использовать

(this->*method)(1); 

или

(*this.*method)(1); 
+0

Спасибо. В моем реальном случае есть таблица указателей методов, указатель метода элемента, которые получают значение в таблице, выполняют задание. – user3013778

0

Проверьте это:

class testClass 
{ 
    public: 
    int method(int parameter) 
    { 
     cout << "Hi"; 
     return 0; 
    }; 

    void callingMethod(); 
}; 


int (testClass::*pt2Member)(int) = NULL; 

void testClass::callingMethod() 
{ 
    pt2Member = &testClass::method; 
    (*this.*pt2Member)(12); 
    //classMethod method = &testClass::method; 
    //*method(1); 
} 

int main() 
{ 
    testClass objTest; 
    objTest.callingMethod(); 
    return 0; 
} 
0

Это должно быть просто

(this->*method)(10); 
+0

Они хотят называть это с помощью указателя участника не напрямую, поэтому этот ответ ошибочен – Vinzenz

+0

@ Vinzenz Отредактировано .. –

+0

Я снял свой нисходящий – Vinzenz

Смежные вопросы