Frage

Ich habe eine C ++ Methode, die eine Variable der Methodensignatur wie dies nimmt:

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

Ich habe versucht, vorbei an:

const std::string myString = "something";

, aber ich erhalte den folgenden Fehler:

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

Ich habe ein paar Fragen.

  1. Wie gehe ich in einem normalen std :: string ohne den "&"
  2. Das sieht aus wie der Wert ist optional „folder =‚‘“ ist es? Und wenn ja, wie Sie einen optionalen Parameter übergeben?
War es hilfreich?

Lösung

Dieses kleine Beispiel funktioniert wie erwartet:

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

Sie können ein ähnlich kleines Beispiel zu stellen, dass zeigt Ihr Problem.

Andere Tipps

Das kompilierte gut für mich, vergleichen Sie es mit, was Sie tun:

#include <string>

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

int main()
{
    const std::string str = "hello world";
    myFunc(str);
    return 0;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top