c++ - Pointing to an object of the same type -
i feel question may bit trivial, cannot wrap head around it. have class, node, trying point node occurs before current node using pointer prevnode. seem unable access variables within prevnode.
when running main.cpp following code, prints result '15340756'. going wrong? appologies im still bit new c++.
node.h
#include "stdafx.h" class node { public: node(); void setprevnode(node n); node getprevnode(); int i; private: node *prevnode; }; node.cpp
#include "stdafx.h" #include "node.h" node::node(){ = 0; } void node::setprevnode(node n){ prevnode = &n; } node node::getprevnode(){ return *prevnode; } main.cpp
#include "stdafx.h" #include "node.h" int _tmain(int argc, _tchar* argv[]) { node nodes[] = {node(), node()}; nodes[0].i = 1; nodes[1].setprevnode(nodes[0]); printf("%i", nodes[1].getprevnode().i); while(true){ } return 0; }
void setprevnode(node n); here setprevnode declared take copy of node passed argument, , point such node. after function returns, pointed node no longer exist , undefined behavior.
what want take node either reference or pointer instead:
void setprevnode(node& n) { prevnode = &n; } void setprevnode(node* n) { prevnode = n; } on same line, getprevnode defined return copy of previous node. want return reference here instead, although can return pointer:
node& getprevnode() { return *prevnode; } node* getprevnode() { return prevnode; }
Comments
Post a Comment