#include <iostream>
using namespace std;
class Node {
private:
Node *next;
public:
virtual const Node * GetNext() const { return next; }
};
class DualNode : public Node {
private:
DualNode *prev;
public:
virtual const DualNode * GetNext() const{ return dynamic_cast< DualNode *>(const_cast< Node *>(Node::GetNext())); }
virtual const DualNode * GetPrev() const{ return prev; }
};
int main(){
Node *nodeArr[2] = {0};
long *pointer = new long;
nodeArr[0] = new Node;
nodeArr[1] = static_cast< Node *>((Node *)pointer);
return 0;
}