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í.

  1. ¿Cómo se pase en un std :: string normal, sin el "&"
  2. Esto parece el valor es opcional "carpeta = ''" es? Y si es así, ¿cómo se pasa un parámetro opcional?
¿Fue útil?

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
scroll top