关于成员选择操作符的有关问题,有点看不明白了

关于成员选择操作符的问题,有点看不明白了
template< class NODETYPE >
class List
{
public:
List(); //constructor
~List(); //destructor
void insertAtFront( const NODETYPE & );
void insertAtBack( const NODETYPE & );
bool removeFromFront( NODETYPE & );
bool removeFromBack( NODETYPE & );
bool isEmpty() const;
void print() const;
private:
ListNode< NODETYPE > *firstPtr; //pointer to first node
ListNode< NODETYPE > *lastPtr; //pointer to last node

//Utility function to allocate a new node
ListNode< NODETYPE > *getNewNode( const NODETYPE & );
};

template< class NODETYPE >
void List< NODETYPE >::insertAtFront( const NODETYPE &value )
{
ListNode< NODETYPE > *newPtr = getNewNode( value );

if ( isEmpty() ) //List is empty
firstPtr = lastPtr = newPtr;  
else
{
//List is not empty
/*nextPtr为另一个类数据成员,这里newpPtr->nextPtr什么意思,newPtr不是类对象,能这样调用nextPtr数据成员吗?*/
newPtr ->nextPtr = firstPtr; //?
firstPtr = newPtr;           
}
}

------解决方案--------------------
nextPtr是ListNode类的数据成员,newpPtr为指向该类的指针,可以直接调用类的数据成员。
------解决方案--------------------
引用的话,也是可以直接调用非private的数据成员和成员函数啊,引用就是对象的一个别名