Cómo pasar una variable std :: string en una función
Pregunta
Tengo un método C ++ que tiene una variable la firma del método es la siguiente:
DLL returnObject** getObject( const std::string folder = "" );
He intentado pasar en:
const std::string myString = "something";
pero me sale el siguiente error:
No matching function call to ... getObject( std::string&);
Tengo un par de preguntas aquí.
- ¿Cómo se pase en un std :: string normal, sin el "&"
- Esto parece el valor es opcional "carpeta = ''" es? Y si es así, ¿cómo se pasa un parámetro opcional?
Solución
Este pequeño ejemplo funciona como se espera:
#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());
}
Es posible que desee poner un pequeño ejemplo de manera similar que muestre su problema.
Otros consejos
Esta bien compilado para mí, compararlo con lo que está haciendo:
#include <string>
void myFunc(const std::string _str)
{
}
int main()
{
const std::string str = "hello world";
myFunc(str);
return 0;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow