سؤال

لدي طريقة C ++ التي تأخذ متغيرًا واحدًا يكون توقيع الطريقة مثل هذا:

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

حاولت المرور:

const std::string myString = "something";

لكني أحصل على الخطأ التالي:

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

لدي بعض الأسئلة هنا.

  1. كيف يمكنني المرور في سلسلة std :: العادية بدون "&"
  2. هذا يبدو أن القيمة اختيارية "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;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top