我是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 ++如何做到这一点的解释?
答案 0 :(得分:6)
检查.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)
{
}
也就是说,默认参数在原型中,而不是在实际定义中。