Error de tiempo de comstackción de C ++: identificador esperado antes de la constante numérica

He leído otras publicaciones similares, pero no entiendo lo que hice mal. Creo que mi statement de los vectores es correcta. Incluso traté de declarar sin tamaño, pero incluso eso no funciona. ¿Qué está mal? Mi código es:

#include  #include  #include  #include  #include  using namespace std; vector v2(5, "null"); vector< vector > v2d2(20,v2); class Attribute //attribute and entropy calculation { vector name(5); //error in these 2 lines vector val(5,0); public: Attribute(){} int total,T,F; }; int main() { Attribute attributes; return 0; } 

No puedes hacer esto:

 vector name(5); //error in these 2 lines vector val(5,0); 

en una clase fuera de un método.

Puede inicializar los miembros de datos en el punto de statement, pero no con los corchetes () :

 class Foo { vector name = vector(5); vector val{vector(5,0)}; }; 

Antes de C ++ 11, necesita declararlos primero, luego inicializarlos, por ejemplo, en un contructor

 class Foo { vector name; vector val; public: Foo() : name(5), val(5,0) {} }; 

No se permiten las inicializaciones con (...) en el cuerpo de la clase. Usa {..} o = ... Desafortunadamente, dado que el constructor respectivo es explicit y el vector tiene un constructor de lista de inicialización, necesita un molde funcional para llamar al constructor deseado.

 vector name = decltype(name)(5); vector val = decltype(val)(5,0); 

Como alternativa, puede usar listas de inicializadores de constructor

  Attribute():name(5), val(5, 0) {} 

Dado que su comstackdor probablemente aún no sea compatible con todo C ++ 11, que admite una syntax similar, obtendrá estos errores porque debe inicializar los miembros de su clase en los constructores:

 Attribute() : name(5),val(5,0) {}