CaT*_*aTx 0 c++ optional-arguments
我想要一个带可选参数的函数.但是,VC++抛出了一个我无法理解的错误.代码简单如下:
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
void myFunction(string something, int w);
int main()
{
myFunction("a string");
int a = 1;
}
void myFunction(string something, int w = 5)
{
cout << something << " - " << w << endl;
}
Run Code Online (Sandbox Code Playgroud)
它抱怨说:
'myFunction': function does not take 1 arguments
Run Code Online (Sandbox Code Playgroud)
但是,如果我在main()之前移动myFunction(),它不会给出错误.到底是怎么回事?请帮忙.谢谢.
此错误是因为您在调用函数时有可选变量,但在声明中没有.
这将创建一个包含两个变量的函数:
void myFunction(string something, int w);
Run Code Online (Sandbox Code Playgroud)
但是,这会使第二个变量成为可选:
void myFunction(string something, int w=5);
Run Code Online (Sandbox Code Playgroud)
您需要使声明具有可选变量.
此外,我很惊讶您的编译器没有尝试吐出与重新定义相关的某种错误.(这甚至可能是一个编译器错误!我将更新研究. 更新:似乎不是编译器错误,但绝对是我希望拥有的功能.即使它是一个错误,它将与链接器相关. )