【问题标题】:How to Call function with default parameter? [duplicate]如何使用默认参数调用函数? [复制]
【发布时间】:2020-09-25 14:09:21
【问题描述】:

我在头文件中有一个函数定义如下:

int myfunction(VpTR*& viewporttable,  wchar* vpname=L"*Active", OpenMode f=fR);

我如何调用这个函数但忽略第二个参数? 我尝试使用以下代码调用它,但出现错误消息:expected an expression

myfunction(myviewporttable,, fR);

我可以省略这个参数但它仍然将 L "* Active" 理解为被调用的值吗?

【问题讨论】:

  • 你不能。 C++ 没有命名参数支持一些其他语言,所以你不能省略任何参数
  • 你仍然可以用参数调用它:myfunction(myviewportable, L"*Active", fR)
  • 制作助手转发功能int myfunction(VpTR*& viewporttable, OpenMode f) { return myfunction(viewporttable, L"*Active", f); }
  • 谢谢大家,我的问题解决了!

标签: c++


【解决方案1】:

语法不允许省略任意位置的参数值,只能省略列表末尾的参数值。

你必须重载 2 个版本:

int myfunction(VpTR*& viewporttable,  OpenMode f=fR) {
    return myfunction(viewporttable,L"*Active",L"*Active",f);
}

int myfunction(VpTR*& viewporttable,  wchar* vpname=L"*Active", OpenMode f=fR);

然后就可以调用了

myfunction(myviewporttable, fR);

【讨论】:

    猜你喜欢
    • 2015-06-07
    • 1970-01-01
    • 2014-10-03
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 2017-11-29
    • 1970-01-01
    相关资源
    最近更新 更多