2012-04-07 20 views
8

Avere un programma come questo:identificatore prevista prima stringa costante

#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; 
} 

... perché sto ottenendo il seguente quando eseguo

g ++ main.cpp

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

Dovresti davvero imparare a compilare sempre con 'g ++ -Wall -g' –

risposta

15

Non puoi inizializzare tst_ dove lo dichiari. Questo può essere fatto solo per i tipi cost primitivi. Invece sarà necessario avere il costruttore per test1.

MODIFICA: questo è un esempio funzionante in ideone.com. Nota alcune modifiche che ho fatto - per prima cosa è meglio che il costruttore del test prenda un riferimento const alla stringa per evitare di copiare. Secondo - se il programma ha esito positivo dovresti restituire 0 non 1 (con return 1 ottieni errore di runtime in ideone)

Problemi correlati