c ++默认函数参数不起作用
c++ default function parameter dont work
我有一个函数需要默认参数:
LINE 13:
void genRand(double offset_x = 0.0, double offset_y = 0.0);
这是函数:
LINE 84:
void game::genRand(double offset_x = 0.0, double offset_y = 0.0) {
perlin.SetFrequency(0.1);
for(int _x=0; _x<dimensions.x/32; _x++){
for(int _y=0; _y<dimensions.y/32; _y++){
vec.push_back((perlin.GetValue(_x+offset_x, _y+offset_y, 0.2)+1.f)*2/2);
}
}
}
错误:
make
g++ main.cpp -w -std=c++11 -lsfml-graphics -lsfml-window -lsfml-system -lnoise -o main
main.cpp:84:64: error: default argument given for parameter 1 of ‘void game::genRand(double, double)’ [-fpermissive]
void game::genRand(double offset_x = 0.0, double offset_y = 0.0) {
^
main.cpp:13:14: note: previous specification in ‘void game::genRand(double, double)’ here
void genRand(double offset_x = 0.0, double offset_y = 0.0);
^
main.cpp:84:64: error: default argument given for parameter 2 of ‘void game::genRand(double, double)’ [-fpermissive]
void game::genRand(double offset_x = 0.0, double offset_y = 0.0) {
^
main.cpp:13:14: note: previous specification in ‘void game::genRand(double, double)’ here
void genRand(double offset_x = 0.0, double offset_y = 0.0);
^
我不明白我做错了什么。
当你单独写一个函数的定义(函数体)时,你不应该再带default parameter
了。
事实上,默认参数值必须出现在声明中,因为这是调用者看到的唯一内容。
最好在重复的函数参数列表中注释默认值:
void foo(int x = 42,
int y = 21);
void foo(int x /* = 42 */,
int y /* = 21 */)
{
...
}
我有一个函数需要默认参数:
LINE 13:
void genRand(double offset_x = 0.0, double offset_y = 0.0);
这是函数:
LINE 84:
void game::genRand(double offset_x = 0.0, double offset_y = 0.0) {
perlin.SetFrequency(0.1);
for(int _x=0; _x<dimensions.x/32; _x++){
for(int _y=0; _y<dimensions.y/32; _y++){
vec.push_back((perlin.GetValue(_x+offset_x, _y+offset_y, 0.2)+1.f)*2/2);
}
}
}
错误:
make
g++ main.cpp -w -std=c++11 -lsfml-graphics -lsfml-window -lsfml-system -lnoise -o main
main.cpp:84:64: error: default argument given for parameter 1 of ‘void game::genRand(double, double)’ [-fpermissive]
void game::genRand(double offset_x = 0.0, double offset_y = 0.0) {
^
main.cpp:13:14: note: previous specification in ‘void game::genRand(double, double)’ here
void genRand(double offset_x = 0.0, double offset_y = 0.0);
^
main.cpp:84:64: error: default argument given for parameter 2 of ‘void game::genRand(double, double)’ [-fpermissive]
void game::genRand(double offset_x = 0.0, double offset_y = 0.0) {
^
main.cpp:13:14: note: previous specification in ‘void game::genRand(double, double)’ here
void genRand(double offset_x = 0.0, double offset_y = 0.0);
^
我不明白我做错了什么。
当你单独写一个函数的定义(函数体)时,你不应该再带default parameter
了。
事实上,默认参数值必须出现在声明中,因为这是调用者看到的唯一内容。
最好在重复的函数参数列表中注释默认值:
void foo(int x = 42,
int y = 21);
void foo(int x /* = 42 */,
int y /* = 21 */)
{
...
}