2
這行代碼已經給我的麻煩負載:問題使用成員函數指針
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()));
}
感謝您的建議,我試過,但它仍然說'標識符'得到「未定義」。這裏是我聲明指針的地方:State *(List :: * get)(); – tayfun2150
@ tayfun2150需要更多的上下文。最好提供一個能夠重現錯誤的[mcve](http://stackoverflow.com/help/mcve)。 – songyuanyao
@ tayfun2150編輯答案。 – songyuanyao