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.

  1. Come faccio a passare in uno std :: string normale senza la "&"
  2. Questo appare come il valore è facoltativo "cartella = ''" è? E se sì, come si fa a passare un parametro opzionale?
È stato utile?

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