Как вызвать функцию-член объекта, используя указатель этого объекта?

У меня есть объект 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

Решение

Разыщите его в первую очередь дважды. Обратите внимание, что * связывается менее плотно, чем . или же ->так что вам нужны парены:

(**s).setMarked();

Или же,

(*s)->setMarked();

В вашем исходном коде компилятор видел эквивалент

**(s.setMarked());

вот почему это не работает.

3

Другие решения


По вопросам рекламы [email protected]