我有一个具有公共成员函数的Node对象。当我在这种情况下指向原始对象的指针(或双指针)时,如何调用成员函数?
以下是Node类中的成员函数:
class Node {
public:
...
int setMarked();
...
private:
...
int marked;
...
};
以下是我试图调用该功能的地方:
Node **s;
s = &startNode; //startNode is the original pointer to the Node I want to "mark"
q.push(**s); //this is a little unrelated, but showing that it does work to push the original object onto the queue.
**s.setMarked(); //This is where I am getting the error and where most of the question lies.
为了防止重要,.setMarked()函数如下所示:
int Node::setMarked() {
marked = 1;
return marked;
}
答案 0 :(得分:3)
首先取消引用它两次。请注意*绑定比.
或->
更紧密,因此您需要parens:
(**s).setMarked();
或者,
(*s)->setMarked();
在原始代码中,编译器看到了等效的
**(s.setMarked());
这就是为什么它不起作用。