C++ 对参数使用默认值

C++ Using default values for parameters

本文关键字:默认值 参数 C++      更新时间:2023-10-16

我是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)
{
}

也就是说,默认参数在原型中,而不是在实际定义中。