Reputation: 696
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
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
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