在我的“.h”文件中,我定义了:
example(CQueue* queue = NULL, double code = 0);
在我的“.cpp”文件的两种不同方法中,我必须使用:
example(queue);
example(code2);
我在两种情况下都会遇到错误。我不想超载。定义它:
example(CQueue* queue, double code = 0);
唯一的方法?或者我可以按照当前定义的方式定义它吗?
答案 0 :(得分:2)
您可以像这样定义它,但不要指望第二次调用可以工作。如果queue
是CQueue*
,则第一个应该没问题。如果它是一个对象,您需要传递其地址:&queue
。
您必须将第二个电话更改为:
example(NULL, code2);
或者,如你所说,超载。
答案 1 :(得分:1)
如果您想传递code
的特定值,必须也会传递早期可选参数的值,即使它们在方法签名中被赋予默认值。
只需明确传递您定义的默认值:example(NULL, code2);
您的定义很好,但如果您希望也可以拨打example(code2)
,那么必须超载。
example(queue);
应该有效,具体取决于queue
的声明。