I'm trying to figure out the correct way of initializing a static container variable whose template value is a private inner class. Here's a toy example
#include <vector>
using namespace std;
template <class myType>
class Foo {
private:
    class Bar {
        int x;
    };
    static vector<Bar*> bars;
};
template <class myType>
vector<Bar*> Foo<myType>::bars; // error C2065: 'Bar' : undeclared identifier
I've also tried
...
template <class myType>
vector<Foo<myType>::Bar*> Foo<myType>::bars; // error C2059: syntax error : '>'
It works if class Bar is declared outside of class Foo but from a design standpoint this is an ugly solution.  Any suggestions?
FYI, everything is declared in a .h file.
Try this:
template <class myType>
vector<typename Foo<myType>::Bar*> Foo<myType>::bars;
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With