Как пройти СТД :: Строковую переменную в функцию
Вопрос
У меня есть метод C ++, который принимает одну вариабельную подпись метода так:
DLL returnObject** getObject( const std::string folder = "" );
Я пытался пройти:
const std::string myString = "something";
Но я получаю следующую ошибку:
No matching function call to ... getObject( std::string&);
У меня здесь есть пара вопросов.
- Как пройти в нормальном STD :: string без "&"
- Это похоже на значение необязательную «папку =», «это?» И если да, как вы проходите дополнительный параметр?
Решение
Этот небольшой пример работает как ожидалось:
#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;
}
Не связан с StackOverflow