我有一个方法void setVal(msgA,functPtr * = NULL,paramTypePtr = NULL);
因此,有两种不同的代码路径可以使用该方法。 1)想要传递消息和NULL functPtr以及有效的paramTypePtr。 2)想要传递消息和有效的functPtr和NULL paramTypePtr。
所以我可以调用case 1)setVal(msg1,NULL,& param1); 对于案例2)setVal(msg2,funct1Ptr,NULL);
以上是2个有效电话吗?
PS:其他人编写了提供上述方法的框架。我知道它应该设计有点不同,其方式是没有默认值的参数。但是试着看看我是否可以在不使用上述调用改变框架的情况下使用它。答案 0 :(得分:0)
C ++中的默认参数可以写成如下。
void DefaultParamCheck(int x = 0, int y =100);
此处, DefaultParamCheck 是您的函数名称。并且第一个参数的值默认为0,第二个参数的值默认为100。
您已编写此函数 void setVal(msgA,functPtr * = NULL,paramTypePtr = NULL)。当您将 NULL 传递给第二个或第三个参数时,给出默认参数是没有意义的。
在情况1中,您可以通过setVal(msg1,NULL,(paramTypePtr)& param1)调用该函数,因为它将采用第二个参数的默认NULL。否则,您将收到错误。
在第2种情况下,您可以通过setVal(msg2,funct1Ptr)调用该函数,此处第三个参数默认为NULL。您不需要通过NULL调用它。