Question

I ai une méthode C ++ qui prend une variable de la signature de la méthode est le suivant:

DLL returnObject** getObject( const std::string folder = "" );

J'ai essayé dans le passage:

const std::string myString = "something";

mais je reçois l'erreur suivante:

No matching function call to ... getObject( std::string&);

J'ai quelques questions ici.

  1. Comment puis-je passer dans une chaîne std :: normale sans « et »
  2. Cela ressemble à la valeur est facultative « dossier = « » » est-il? Et si oui, comment passez-vous un paramètre optionnel?
Était-ce utile?

La solution

Ce petit exemple fonctionne comme prévu:

#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());
}

Vous pouvez afficher un exemple aussi faible qui montre votre problème.

Autres conseils

Cette belle compilé pour moi, le comparer à ce que vous faites:

#include <string>

void myFunc(const std::string _str)
{
}

int main()
{
    const std::string str = "hello world";
    myFunc(str);
    return 0;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top