現代の C++ イニシャライザ リストは、オブジェクトを初期化するのに非常に便利であり、独自のコンストラクタを定義する必要がなくなると考えています。
struct point
{
float coord[3];
};
point p = {1.f, 2.f, 3.f}; // nice !
ただし、クラスが別のクラスから継承されている場合、これは機能しません。
template<typename T>
class serializable
{
protected:
serializable() = default;
...
// other stuff
}
struct point : public serializable<point>
{
float coord[3];
};
point p = {1.f, 2.f, 3.f}; // Doesn't work :(
ポイントクラスに追加しようとしpoint() = default;
ましたが、それもうまくいきませんでした。初期化子リストでポイントを初期化するにはどうすればよいですか?