Подтвердить что ты не робот

Что означает * * в С++?

Что делает

 private:
    BOOL (LASreader::*read_simple)();

означает?

Это от LAStools, lasreader.hpp

BOOL является typedef bool (из mydefs.hpp), но я не знаю, что объявляет эта строка, в частности ::* ( двойная звездочка), и что он выглядит как вызов функции.

4b9b3361

Ответ 1

Это a указатель на функцию-член. В частности, read_simple является указателем на функцию-член класса LASreader, которая принимает нулевые аргументы и возвращает a BOOL.

Из примера в cppreference:

struct C {
    void f(int n) { std::cout << n << '\n'; }
};
int main()
{
    void (C::*p)(int) = &C::f; // p points at member f of class C
    C c;
    (c.*p)(1); // prints 1
    C* cptr = &c;
    (cptr->*p)(2); // prints 2
}

Ответ 2

BOOL (LASreader::*read_simple)();

read_simple является указателем на функцию-член класса LASreader, которая не принимает аргументов и возвращает a BOOL.