1

我是 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++ 如何做到这一点?

4

1 回答 1

7

检查 .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)
{

}

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

于 2012-07-05T14:20:50.457 回答