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.

  1. Como faço para passar em um std normais :: string sem o "&"
  2. Parece que o valor é opcional "pasta = ''", é? E se sim, como você passa um parâmetro opcional?
Foi útil?

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