C++如何将Vector3实例设为Quaternion构造函数的默认参数
实现方法
你只需要在Quaternion类的构造函数参数列表中,直接给uAxis传入Vector3(1, 0, 0)作为默认值即可,修改后的代码如下:
class Quaternion { public: Vector3 axis; float scalar; // 直接给第一个参数设置默认构造的Vector3实例 Quaternion(Vector3 uAxis = Vector3(1, 0, 0), float uScalar = 0) { axis = uAxis; scalar = uScalar; }; };
可用的调用方式
- 无参数构造:
Quaternion q;此时axis为(1,0,0),scalar为0 - 仅传入axis参数:
Quaternion q(Vector3(0,1,0));此时axis为(0,1,0),scalar为0 - 传入两个参数:
Quaternion q(Vector3(0,0,1), 1.5f);此时axis为(0,0,1),scalar为1.5
补充说明
如果你需要支持仅传入scalar参数的构造场景(比如Quaternion q(0.5f);),由于C++默认参数按顺序匹配,无法通过上述默认参数实现,需要额外添加构造函数重载,示例如下:
class Quaternion { public: Vector3 axis; float scalar; Quaternion(Vector3 uAxis = Vector3(1, 0, 0), float uScalar = 0) { axis = uAxis; scalar = uScalar; }; // 新增仅接收scalar的重载 Quaternion(float uScalar) : axis(Vector3(1, 0, 0)), scalar(uScalar) {}; };
内容的提问来源于stack exchange,提问作者Darcy Power
相关产品推荐
相关产品推荐

