使用指向成员函数的指针时出现问题

issue with using pointer to member function

本文关键字:指针 问题 函数 成员      更新时间:2023-10-16

这行代码给我带来了很多麻烦:

while(!list.add(list.*get().children()));

它脱离了上下文,但我只是尝试使用类成员函数指针 get((。有人可以提供建设性的反馈吗?

struct State
{
    State *children();
};
class List
{
    State *getBFS();
    State *getDFS();
    State *getUCS();
    State *getGS();
    State *getAStar();
public:
    State *(List::*get)();
    bool add(State *state);
    List(short type)
    {
        switch(type)
        {
        case 0: get = &List::getBFS;
            break;
        case 1: get = &List::getDFS;
            break;
        case 2: get = &List::getUCS;
            break;
        case 3: get = &List::getGS;
            break;
        default: get = &List::getAStar;
        }
    }
};
int main()
{
    List list(0);
    while(!list.add((list.*get()).children()));
}

请注意,operator() 的优先级高于 operator.* ,因此您应该更改

list.*get()

(list.*get)()

编辑

你想要的应该是

while(!list.add(((list.* list.get)())->children()));
//                       ~~~~~       ~~

注 (1( getList的成员;(2( get的返回类型是指针(即 State* (,所以你应该使用 -> 而不是 .