クラスをシンプルに保ち、コンストラクターを定義しないようにしたいので、 Pt data = {0, 5}; を実行できます。だから私は、Pt_tを短いものから長いものに、またはその逆に変換する最良の方法は、このようなことをすることだと考えました。
template <class T>
struct Pt_t
{
T x, y;
template <class T2> operator Pt_t<T2>() { Pt_t pt = {x, y}; return pt; }
};
コンパイラはこれを好まず、リターン pt で演算子 Pt_t を呼び出します。したがって、スタックオーバーフローが発生します。どうすればこれを防ぐことができますか? 私が考えることができる唯一の解決策は、Pt_t pt = {1, 2}; を削除する Pt_t にコンストラクターを使用させることです。できれば保持したいものです。