Come passare una variabile std :: string in una funzione
Domanda
Ho un metodo C ++ che prende una variabile la firma del metodo è simile a questo:
DLL returnObject** getObject( const std::string folder = "" );
ho provato passando in:
const std::string myString = "something";
ma ottengo il seguente errore:
No matching function call to ... getObject( std::string&);
Ho un paio di domande.
- Come faccio a passare in uno std :: string normale senza la "&"
- Questo appare come il valore è facoltativo "cartella = ''" è? E se sì, come si fa a passare un parametro opzionale?
Soluzione
Questo piccolo esempio funziona come previsto:
#include <stdio.h>
#include <string>
class foo {
public:
void getObject( const std::string folder = "" );
};
int main ()
{
const std::string myString = "something";
foo* pFoo = new foo;
pFoo->getObject( myString);
pFoo->getObject(); // call using default parameter
return 0;
}
void foo::getObject( const std::string folder)
{
printf( "folder is: \"%s\"\n", folder.c_str());
}
Si potrebbe desiderare di inviare un altrettanto piccolo esempio che mostra il problema.
Altri suggerimenti
Questo raffinato compilato per me, confrontarlo con quello che stai facendo:
#include <string>
void myFunc(const std::string _str)
{
}
int main()
{
const std::string str = "hello world";
myFunc(str);
return 0;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow