在解除声明中定义默认参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在解除声明中定义默认参数相关的知识,希望对你有一定的参考价值。
我有一个函数,类型是 void send(int option, int key = 0)
哪儿 key
的默认参数为 1
. 由于链接器的引用问题,我必须声明类型的 send
在文件的顶部。
void send(int option, int key);
...
void send(int option, int key = 0)
// Actual implementation here
我有一堆调用 send
的函数,有的有,有的没有 key
例如 send(4)
和 send(2, 6)
问题在于编译顶行初始函数声明。
尝试1:
void send(int option, int key);
抛出错误的功能 send(4)
因为它认为自己需要一个键值。
尝试2:
void send(int option, int key = 0);
抛出这个 error: default argument given for parameter 2 of 'void send(int, int)' [-fpermissive]
void send(int option, int key = 0)
企图3:
void send(int option);
void send(int option, int key);
投掷 undefined reference to 'send(int)'
中的一个函数体。
我使用的是 gcc版本7.2.0. 如何定义一个带有默认可选参数的函数的类型(最好不要用头文件).我有一个类型为void send(int option, int key = 0)的函数,其中key的默认参数为1.由于链接器的引用问题,我必须声明类型。
答案
如果你在声明中指定了默认参数(你应该这样做),你一定不要在定义中指定它。
void send(int option, int key = 0);
// ...
void send(int option, int key)
// Actual implementation here
以上是关于在解除声明中定义默认参数的主要内容,如果未能解决你的问题,请参考以下文章