なぜか、swiftをC++11に移植しているのですが、思ったより楽でした。 C++11の機能はまだ慣れていないので、メモを残しておきます。
1) クラスメンバの宣言時初期化
class Book { Book() {} float price = 10.0; };
2) swiftクラスのinitが2つあったとして、型が異なる場合でも宣言できるが、C++ではこのような宣言はできない。
そのため、2つ目のコンストラクタはstaticなfactoryメソッドとして実装する。
3) タプルは構造体に置き換える。
std::tupleもあるが、使いづらいので、構造体の方がよい。
4) staticでfloatなクラスメンバ定数の宣言時初期化はできない(intは可能)ので、実装部で初期化する。
struct Book { Book() {} static float price; }; float Book::price = 10.0;
5) 2つのクラスでお互いのクラスを使ったメソッドを定義する場合、メソッド定義をプロトタイプ宣言とままとし、 メソッド実装をcppファイルで行う。