Может быть, вы захотите попробовать что-то вроде этого:
class Node{
private:
Node* _next;
public:
Node(Node* next) : _next(next){}
Node* getNext(){ return _next; }
const Node* getNext() const {return _next; }
};
ps ИМХО. Программисты C ++ очень часто игнорируют ссылки и используют указатели там, где они не нужны. Может ли это быть вариантом для вашего случая? :)
struct Node{ Node& _next; Node(Node& next) : _next(next){} };
PP.SS. Второй getNext может не понадобиться в вашем конкретном случае. Это просто сделать жизнь проще, если у вас есть функции, использующие указатели на константные узлы. В приведенном ниже примере я попытаюсь прояснить идею с помощью const-метода немного подробнее:
#include <iostream>
#include <cstdlib>
class Node{
private:
Node* _next;
public:
Node(Node* next) : _next(next){}
Node* getNext(){ std::cout << "getNext\n"; return _next; }
const Node * getNext() const { std::cout << "getNext const\n"; return _next; }
};
void f1(Node* node){ node->getNext(); }
void f2(const Node* node){ node->getNext(); }
int main() {
Node* n1 = new Node(NULL);
Node* n2 = new Node(n1);
f1(n2);
f2(n2);
}