fedemengo
fedemengo

Reputation: 696

Correct template for nested class C++

I can't figure out the correct syntax to write a correct template for a nested class. I'd like to do something like this

template <typename T>
class list {
private:
    class node {
    public:
        T value;
        node();
        ~node();
    };

public:
    node<T> *H;
    list();
    ~list();
};

I want to have a class to represent each element of the outer class, so I'd like to have the inner class to be hidden inside the outer. Is this possible? Or should I use a different approach?

Upvotes: 11

Views: 14840

Answers (2)

fedemengo
fedemengo

Reputation: 696

Eventually what I was looking for was this.

template <typename T>
class list {
private:
    template <typename U>
    class node {
    public:
        U value;
        node();
        ~node();
    };

public:
    node<T> *H;
    list();
    ~list();
};

Upvotes: 1

user0042
user0042

Reputation: 8018

You don't need to specify the template parameter for the inner class (because it isn't declared as template class):

template <typename T>
class list {
private:

    class node {
    public:
        T value;
        node();
        ~node();
    };

public:
    node *H; // <<<<<<
    list();
    ~list();
};

Upvotes: 18

Related Questions