c++ “参数缺少默认参数”编译器错误

tpxzln5u  于 9个月前  发布在  其他
关注(0)|答案(5)|浏览(99)
void func ( string word = "hello", int b ) {
    // some jobs
}

字符串
在另一功能中

//calling 
func ( "", 10 ) ;


当我编译时,它会发出这个错误:
参数缺少默认参数
我想使用像func ( 10 )func ( "hi" )这样的函数。
如何在不更改任何内容(例如设置int b = 0)的情况下修复它?

omjgkv6w

omjgkv6w1#

在默认参数开始之后不能有非默认参数。换句话说,如何为b指定一个值,使word保留默认值“hello”?

vptzau2j

vptzau2j2#

具有默认值的参数必须位于参数列表的末尾。
所以只要将函数声明改为

void func(int b, string word = "hello")

字符串

o8x7eapl

o8x7eapl3#

具有默认值的参数必须位于列表的末尾,因为在调用函数时,您可以将参数保留在末尾,但不能在中间遗漏它们。
因为你的参数有不同的类型,所以你可以使用重载来获得相同的效果:

void func ( string word, int b ) {

  // some jobs

}

void func ( int b ) { func("hello", b); }

字符串

zxlwwiss

zxlwwiss4#

错误信息是正确的。如果默认参数被分配给一个给定的参数,那么所有后续的参数都应该有一个默认参数。你可以用两种方法修复它;
(1)改变参数的顺序:

void func (int b, string word = "hello");

字符串
(2)为b分配默认值:

void func (string word = "hello", int b = 0);

xa9qqrwz

xa9qqrwz5#

你不能不改变任何东西就修复它!
要修复它,可以使用重载:

void func ( string word, int b ) {
  // some jobs
}

void func ( string word ) {
    func( word, 999 );
}

void func ( int b ) {
    func( "hello", b );
}

字符串

相关问题