|
我有一个 C++ 类 CBiVector,用来处理二维向量相关问题。
下面是简化的代码:- enum class rotate{ CW, CCW,};class CBiVector{public: explicit CBiVector( const double& x, const double& y ) : m_x{ x }, m_x{ y }{}; explicit CBiVector( const CBiVector& V ) : CBiVector{ V.m_x, V.m_y }{}; explicit CBiVector( const CBiVector& V, rotate eRotate ) : CBiVector{ V } { rotate::CCW == eRotate ? ccw() : cw(); }; // ... CBiVector& ccw( void ) { const auto t{ m_x }; m_x = -m_y; m_y = t; return *this; } CBiVector& cw( void ) { const auto t{ m_x }; m_x = m_y; m_y = -t; return *this; } // ...private: double m_x; double m_y;}
复制代码
我现在对第三个构造函数不满意,
它的本意是:构造一个新向量,源于对一个已知向量的顺时针/逆时针90°旋转,
不满意的地方在于,内部有一个 bool 表达式需运行时计算,
可否有消除之道?比如用 模板、constexpr if 之类的技术? |
|