Como passar uma variável de std :: string em uma função
Pergunta
Eu tenho um método C ++ que leva uma variável A assinatura do método é assim:
DLL returnObject** getObject( const std::string folder = "" );
Eu tentei passar:
const std::string myString = "something";
Mas recebo o seguinte erro:
No matching function call to ... getObject( std::string&);
Eu tenho algumas perguntas aqui.
- Como faço para passar em um std normais :: string sem o "&"
- Parece que o valor é opcional "pasta = ''", é? E se sim, como você passa um parâmetro opcional?
Solução
Este pequeno exemplo funciona como esperado:
#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());
}
Você pode postar um exemplo igualmente pequeno que mostra seu problema.
Outras dicas
Isso compilou bem para mim, compare -o com o que você está fazendo:
#include <string>
void myFunc(const std::string _str)
{
}
int main()
{
const std::string str = "hello world";
myFunc(str);
return 0;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow