Estoy tratando de averiguar la forma correcta de inicializar una variable de contenedor estático cuyo valor de plantilla es una clase interna privada. Aquí hay un ejemplo de juguete¿Cómo se inicializa un contenedor con plantilla estática?
#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
También he intentado
...
template <class myType>
vector<Foo<myType>::Bar*> Foo<myType>::bars; // error C2059: syntax error : '>'
Funciona si class Bar
es declarado fuera de class Foo
pero desde el punto de vista de diseño se trata de una solución fea. ¿Alguna sugerencia?
FYI, todo se declara en un archivo .h.
me ganó por 4secs! ': + 1' de mi parte – sbi
siempre me golpearon por un margen grande. :( – Donotalo
Sí, páseme también. La regla es, use la palabra clave 'typename' antes de A :: B cuando se supone que es un tipo y la expresión A implica un parámetro de plantilla. – aschepler