Как пройти СТД :: Строковую переменную в функцию

StackOverflow https://stackoverflow.com/questions/3817980

  •  26-09-2019
  •  | 
  •  

Вопрос

У меня есть метод C ++, который принимает одну вариабельную подпись метода так:

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

Я пытался пройти:

const std::string myString = "something";

Но я получаю следующую ошибку:

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

У меня здесь есть пара вопросов.

  1. Как пройти в нормальном STD :: string без "&"
  2. Это похоже на значение необязательную «папку =», «это?» И если да, как вы проходите дополнительный параметр?
Это было полезно?

Решение

Этот небольшой пример работает как ожидалось:

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

Возможно, вы захотите опубликовать аналогичный небольшой пример, который показывает вашу проблему.

Другие советы

Это скомпилировало для меня, сравните его с тем, что вы делаете:

#include <string>

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

int main()
{
    const std::string str = "hello world";
    myFunc(str);
    return 0;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top