Pebble Coding

プログラマーの作業メモ

swiftをC++11に移植する

なぜか、swiftC++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ファイルで行う。