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