C++ ...当所有参数都有默认值时

huf*_*uff 4 c++ arguments default function

我想这是一个非常荒谬/基本的问题,但仍然是:

class m
{
public:
   void f(int ***);
  /***/
}
void m::f(int ***a = NULL)
{
  /***/
}
Run Code Online (Sandbox Code Playgroud)

对f的调用(以及任何具有所有参数的默认值的函数)都不接受0参数.为什么?那我该如何格式化声明呢?

R S*_*hko 13

如果函数定义在头文件中,那么工作正常.规则是调用函数的人必须"看到"默认值.

所以,我猜你在一个单独的源文件中有函数定义.假设是这种情况,只需将默认值放在函数声明中(在类中):

class m
{
public:
   void f(int *** = 0);
  /***/
};
Run Code Online (Sandbox Code Playgroud)

您还需要从函数定义中删除默认值,因为您只能在单个位置定义默认值(即使值本身相同).