Неизвестный синтаксис void (Type :: m_function) ()

0

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

Первый

void Foo()
{
    (((Type*)parent)->*m_function)();
}

Насколько я могу сказать, они отбрасывают родительский объект Type и затем вызывают функцию разыменования? Я не уверен, что раньше видел → * m_function.

Также я не вижу, где m_function объявляется, возможно, здесь? Который содержит больше синтаксиса, который я не понимаю. Это объявление функции, которая возвращает void и принимает параметр функции? Но где имя функции?

class Foo()
{
    void (Type::*m_function)();
};
Теги:

1 ответ

2
Лучший ответ

Он вызывает функцию-член, используя указатель на эту функцию: C++ Указатель указателя на функцию- член

Да, void (Type::*m_function)(); объявляет член функции m_function типа "член-функция типа, принимающего 0 аргументов и возвращающего void"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню