X と Y の値を保持する 2 次元 (数学) ベクトル クラスを作成したいと考えています。+ などの演算子のオーバーロードを持たせて、コードで数式を簡単に表現できるようにしたいと考えています。このことを考慮:
template <class T>
struct Vector
{
T x, y;
inline Vector<T> operator +(const Vector& other) const
{
return {x + other.x, y + other.y};
}
};
ご覧のとおり、return ステートメントで初期化子リストを使用する C++11 の機能を利用しました。ただし、それらはまだ式ではありません。操作を適用することはできません。そして、ここに私の問題があります。クラスをPODにしたい。パラメータを介して x と y を初期化できるように、カスタム コンストラクタを定義することはできません。構築にイニシャライザリストを使用できるため、これは問題ありません。
Vector<int> foo = {1, 2};
ただし、式の中に別の Vector を作成する必要がある場合は使用できません (演算子 * は定義されていませんが、ここでは問題になりません)。
Vector<int> result = (foo + {1, 2}) * 12;
前に述べたように、コンストラクターの代替はオプションではありません。{1, 2} を名前付き変数に格納する以外に、この問題の解決策が思い浮かばないので、これに関する意見をお待ちしております。