كيفية تمرير متغير Std :: String إلى وظيفة
سؤال
لدي طريقة C ++ التي تأخذ متغيرًا واحدًا يكون توقيع الطريقة مثل هذا:
DLL returnObject** getObject( const std::string folder = "" );
حاولت المرور:
const std::string myString = "something";
لكني أحصل على الخطأ التالي:
No matching function call to ... getObject( std::string&);
لدي بعض الأسئلة هنا.
- كيف يمكنني المرور في سلسلة std :: العادية بدون "&"
- هذا يبدو أن القيمة اختيارية "Folder = ''" هل هي؟ وإذا كان الأمر كذلك ، فكيف تمر بمعلمة اختيارية؟
المحلول
هذا المثال الصغير يعمل كما هو متوقع:
#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