private:
BOOL (LASreader::*read_simple)();
是什么意思?
这是一个从LAStools,在lasreader.hpp
BOOL
是typedef bool
(从mydefs.hpp),但我不知道这是什么行声明,特别是::*
(双冒号星号),而且它看起来像一个函数调用。
private:
BOOL (LASreader::*read_simple)();
是什么意思?
这是一个从LAStools,在lasreader.hpp
BOOL
是typedef bool
(从mydefs.hpp),但我不知道这是什么行声明,特别是::*
(双冒号星号),而且它看起来像一个函数调用。
这是一个pointer to member function。具体而言,read_simple
是指向LASreader
类的成员函数的指针,该成员函数接受零参数并返回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
}
BOOL (LASreader::*read_simple)();
read_simple
是指向LASreader
类的成员函数,它没有参数,并返回一个BOOL
。
指向成员的指针。 –
就像一个方法的别名?因为在这个类中没有名为'read_simple'的成员(变量或方法)。这个头文件的CPP确实使用了一个名为'read_simple'的变量,但是我没有看到它的任何声明。而这个类没有扩展任何东西..也许我只是缺少一些东西 – Matt
相关帖子:https://stackoverflow.com/questions/670734/c-pointer-to-class-data-member – coincoin