列表引用的默认参数 < C++中,我如何指定函数中的列表引用的默认值? void fun( std::list<My_Object *> &the_list, int n = 4 ) void乐趣( std::列表和_列表, int n=4 )

列表引用的默认参数 < C++中,我如何指定函数中的列表引用的默认值? void fun( std::list<My_Object *> &the_list, int n = 4 ) void乐趣( std::列表和_列表, int n=4 ),c++,default,C++,Default,如果它是一个普通引用,那么默认为它的唯一内容就是一个可能不可用的有效左值。但如果它是对const的引用,则可以将其默认为空列表,如下所示: void fun( std::list<My_Object *> const & the_list = std::list<My_Object *>(), int n = 4 ) void乐趣( std::list const&the_list=std::list(), int n=4 ) 如果您有一个名为a的

如果它是一个普通引用,那么默认为它的唯一内容就是一个可能不可用的有效左值。但如果它是对const的引用,则可以将其默认为空列表,如下所示:

void fun(
  std::list<My_Object *> const & the_list = std::list<My_Object *>(),
  int n = 4
) 
void乐趣(
std::list const&the_list=std::list(),
int n=4
) 
如果您有一个名为a的列表,它可以在声明站点上找到,那么如下所示

void fun(
      std::list<My_Object *> & the_list = a,
      int n = 4
    ) 
void乐趣(
std::list&列表=a,
int n=4
) 
但是要小心,以便调用函数时,
a
列表仍然处于“活动”状态

在C++中,如何指定默认值? 中的列表引用的值 功能

void fun(
  std::list<My_Object *> &the_list,
  int n = 4
) 
对你来说,我不会的。重载函数,这样就可以在没有列表的情况下调用它;或者为每个指针获取参数,这样用户就可以传递一个
NULL
指针


我强烈希望超载

默认值应该是什么?一个特定的列表。我更喜欢直接输入。(感谢您修复标记。)所讨论的函数是一个约16行的构造函数,因此重载会导致一些重复的代码。您可以排除常见的初始化逻辑,或者使用左值构造一个新的初始化逻辑,然后交换。@Tim:是,不幸的是C++03不允许直接构造函数forwarding@Tim:我认为C++1x将允许构造函数转发。您的编译器可能已经支持该功能。否则DeadMG的交换想法可能是最好的选择。