2015-06-22 14 views

risposta

9

Se si utilizza () si esegue in most vexing parse. È dichiarato una funzione myVec che non prende argomenti, e restituisce un vector<pair<string, string>>

Passa alla {}

vector<pair<string,string>> myVec{}; 
+7

Oppure, in alternativa, nessuna parentesi a tutti – KABoissonneault

2

tenta di utilizzare in questo modo, al momento la funzione myVec non ha parametri e tornare vector<pair<string,string>>:

vector<pair<string,string>> myVec{}; 

o

vector<pair<string,string>> myVec; 
10

Non c'è bisogno di inizializzare un vettore modo

vector<pair<string,string>> myVec(); 

Si tratta di una dichiarazione di funzione con il nome myVec che non ha parametri e ha tipo di ritorno vector<pair<string,string>>

E 'sufficiente scrivere semplicemente

vector<pair<string,string>> myVec; 

perché in ogni caso si sta creando un vettore vuoto.

Oppure, se si vuole che il vettore aveva alcuni valori iniziali e il vostro compilatore supporta C++ 2011 allora si può anche scrivere ad esempio

std::vector<std::pair<std::string, std::string>> myVec = 
{ 
    { "first", "first" }, { "second", "second" }, { "third", "third" } 
};