I get a compile error I can not figure out with this code:

In the .h file

Code:
template <class T> class ABC {

    private:

        struct node_t {
            T data;
            struct node_t *next;
        };

        node_t *new_node(T element);
};
In the .cpp file as the first thing after the #includes:

Code:
template <class T>
node_t *ABC<T>::new_node(T element) {
    struct node_t *node = new struct node_t;
    node->data = element;
    node->next = NULL;
    return node;
}
Code:
ABC.cpp:17: error: expected constructor, destructor, or type conversion before ‘*’ token
The file has about 200 lines of code and this section is the only part that generates an error (for now ).