如何使用该对象的指针调用对象的成员函数?

时间:2014-11-11 02:37:29

标签: c++ pointers member-functions double-pointer

我有一个具有公共成员函数的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;
}

1 个答案:

答案 0 :(得分:3)

首先取消引用它两次。请注意*绑定比.->更紧密,因此您需要parens:

(**s).setMarked();

或者,

(*s)->setMarked();

在原始代码中,编译器看到了等效的

**(s.setMarked());

这就是为什么它不起作用。