2016-09-07 4 views
-1

Ich habe eine Funktion, die sich von der der 'main' Methode mit den gleichen Argumenten, dass Haupt mit (int main (int argc, char* argv[]))std :: make_pair <const char *, int>

std::pair<const char *, int> mtd1 (int argc, char * argv[]){ 
. 
. 
. 
} 

seit argv hieß genannt wurde [1] ist ein Zeiger auf einen String (angenommen, es war mindestens ein Programmargument mit Ausnahme von argv [0]), aber kein konstanter Zeiger, ist es immer noch möglich (kein Fehler), argv [1] in einer Return-Anweisung innerhalb von mtd1 zu übergeben

return std::make_pair <argv[1],99999 > 

oder muss ich dies in meinem mtd1 tun Verfahren

const char *abc = arg[1] 

vor

return std::make_pair (abc,99999)  <- edited 
+2

Haben Sie versucht, es kompilieren? –

+0

Ob es möglich ist (sicher) hängt davon ab, was an "mtd1" übergeben wird. Übrigens, was ist 'String'? – MikeCAT

+0

Sie haben wahrscheinlich 'std :: make_pair' mit den regulären, nicht eckigen Klammern gemeint. –

Antwort

1

Wie wäre es zu tun den sicheren Weg der Rückkehr?

std::pair<std::string, int> mtd1 (int argc, char * argv[]) 
{ 
. 
. 
. 
} 

und

return std::make_pair (std::string(argv[1]),99999); 

Wenn Sie darauf bestehen std::pair<char*,int> auf Rückkehr, dann sollte diese Arbeit:

return std::make_pair (argv[1],99999); 
+0

Warum '-1'? Ist mein Vorschlag falsch? –

+0

Wie könnte man 'string' mit' integer' paaren? mtd1 (int argc, char * argv []) ' – someone

+0

@someone Es gab einen Tippfehler. Ich habe es repariert. –

Verwandte Themen