2012-04-07 8 views
8

Tener un programa como esta cadena:identificador espera antes de una constante

#include <iostream> 
#include <string> 
using namespace std; 
class test 
{ 
public: 
    test(std::string s):str(s){}; 
private: 
    std::string str; 
}; 

class test1 
{ 
public: 
    test tst_("Hi"); 
}; 

int main() 
{ 
    return 1; 
} 

... ¿por qué estoy recibiendo el siguiente cuando ejecuto

g ++ main.cpp

main.cpp:16:12: error: expected identifier before string constant 
main.cpp:16:12: error: expected ‘,’ or ‘...’ before string constant 
+1

Debería aprender a compilar siempre con 'g ++ -Wall -g' –

Respuesta

15

No puede inicializar tst_ donde lo declara. Esto solo se puede hacer para tipos primitivos const estáticos. En cambio, necesitarás tener un constructor para test1.

EDITAR: aquí está un ejemplo de trabajo en ideone.com. Fíjese en algunos cambios que hice: primero, es mejor que el constructor de prueba tome una referencia constante a la cadena para evitar la copia. Segundo: si el programa tiene éxito, debe devolver 0 no 1 (con retorno 1 obtendrá error de tiempo de ejecución en ideone)

Cuestiones relacionadas