C++ 对参数使用默认值
C++ Using default values for parameters
我是C++新手(来自 C# 背景),我有一个具有以下签名的函数
void AddBenchNode(ref_ptr<Group> root ,ref_ptr<Node> benches, bool setAttitude = false, float scale_x =.15, float scale_y =15, float scale_z = 15, int positionx = 250, int positiony = 100, int positionz =0 )
{
}
但是当我尝试按如下方式调用代码时,我收到一个错误,说函数不接受 4 个参数。
//then I try to call my function like so
AddBenchNode(root, benches, false, 250);
但我反而收到以下错误消息
错误 C2660:"AddBenchNode":函数不接受 3 个参数
希望解释一下C++如何做到这一点?
检查 .hpp 文件中的原型。它可能被声明为
void AddBenchNode(ref_ptr<Group> root ,ref_ptr<Node> benches, bool setAttitude,
float scale_x, float scale_y, float scale_z, int positionx,
int positiony, int positionz);
编辑:标题中的原型应该是
void AddBenchNode(ref_ptr<Group> root ,ref_ptr<Node> benches, bool setAttitude = false, float scale_x =.15, float scale_y =15, float scale_z = 15, int positionx = 250, int positiony = 100, int positionz =0 );
然后你的 cpp 文件应该只有
void AddBenchNode(ref_ptr<Group> root ,ref_ptr<Node> benches, bool setAttitude, float scale_x, float scale_y, float scale_z, int positionx, int positiony, int positionz)
{
}
也就是说,默认参数在原型中,而不是在实际定义中。
相关文章:
- 当给定默认值时,为什么此模板参数推导失败
- 如何在C++中提供模板化函数作为另一个函数的参数,默认值?
- 在 c++ 中,如果我创建一个接受一个具有默认值的参数的构造函数 - 它会用作默认(空)构造函数吗?
- 为什么无法在可变参数模板中将尾随模板参数指定为默认值?
- 可变参数模板和具有继承的默认值
- 具有默认值的单个参数构造函数是否与默认构造函数相同?
- 在子类函数覆盖中省略具有默认值的参数
- 函数作为具有默认值的参数
- 具有另一个具有默认值的模板参数的模板推导
- const变量是否可以在具有默认值的参数中赋值(作为可选参数)
- 对 const 引用参数使用默认值会导致崩溃
- 为什么我需要将默认引用参数定义为 const 以便为其分配一个左值?
- 指针参数的默认值
- C++中出现意外的编译错误:将默认值传递给函数参数
- 我可以在哪里放置参数的默认值
- 如何在C++中设置std::list参数的默认值?
- 具有默认值的参数的自动类型扣除
- Clang vs GCC - 可变参数模板参数包后跟默认值参数在 GCC 4.8 中有效,但在 Clang 3.5 中无
- c++变长函数中默认值参数的位置
- 将函数指针上的参数与默认值参数一起丢弃是否有效