2015-06-10 57 views
10

是什么:: C++中的含义是什么?

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

是什么意思?

这是一个从LAStools,在lasreader.hpp

BOOLtypedef bool(从mydefs.hpp),但我不知道这是什么行声明,特别是::*(双冒号星号),而且它看起来像一个函数调用。

+11

指向成员的指针。 –

+0

就像一个方法的别名?因为在这个类中没有名为'read_simple'的成员(变量或方法)。这个头文件的CPP确实使用了一个名为'read_simple'的变量,但是我没有看到它的任何声明。而这个类没有扩展任何东西..也许我只是缺少一些东西 – Matt

+1

相关帖子:https://stackoverflow.com/questions/670734/c-pointer-to-class-data-member – coincoin

回答

11

这是一个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 
} 
+0

谢谢!现在我只需要弄清楚他们为什么要这样做。 :)该成员指向纯虚拟成员函数。 – Matt

+2

@Matt没有错。当你用一个实例调用它时,它仍然会经历相同的虚拟调度过程。 – Barry

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

read_simple是指向LASreader类的成员函数,它没有参数,并返回一个BOOL