两个默认参数设置给出错误/

时间:2012-08-02 21:11:46

标签: c++

在我的“.h”文件中,我定义了:

    example(CQueue* queue = NULL, double code = 0);

在我的“.cpp”文件的两种不同方法中,我必须使用:

    example(queue);

    example(code2);

我在两种情况下都会遇到错误。我不想超载。定义它:

    example(CQueue* queue, double code = 0);

唯一的方法?或者我可以按照当前定义的方式定义它吗?

2 个答案:

答案 0 :(得分:2)

您可以像这样定义它,但不要指望第二次调用可以工作。如果queueCQueue*,则第一个应该没问题。如果它是一个对象,您需要传递其地址:&queue

您必须将第二个电话更改为:

example(NULL, code2);

或者,如你所说,超载。

答案 1 :(得分:1)

如果您想传递code的特定值,必须也会传递早期可选参数的值,即使它们在方法签名中被赋予默认值。

只需明确传递您定义的默认值:example(NULL, code2);

您的定义很好,但如果您希望也可以拨打example(code2),那么必须超载。

example(queue);应该有效,具体取决于queue的声明。