hello, i am hoping that someone knowledgable about C++ templates could help solve a problem i am having. Before i explain the problem, i want to show a simplified version of the code I've got for the class that I'm having trouble with:

Code:
template <typename TYPE>
class linked_list
{
private:
	template <typename TYPE>
	class node
	{
		TYPE * data;
	};

public:
	node<TYPE> & operator[](unsigned int index);
};
The problem is that when I try to make a declaration for the operator[]() method, I get many errors. I want it to return a reference to a linkedlist::node class. I attempted to declare it like this:

Code:
template <typename TYPE>
linked_list<TYPE>::node<TYPE> & linked_list<TYPE>::operator[](unsigned int index)
{
}
I would think that something like this would work. Microsoft Visual C++ 8.0 says that the node type that's in the linked_list class is equivilent to

Code:
class linked_list<TYPE>::node<typename TYPE>
I would be appreciative if someone would be able to tell me the proper way to make my declaration for operator[](). Thank you.