次のクラス宣言があります。
class A {
public:
A();
private:
boost::asio::io_service io;
boost::asio::deadline_timer t;
};
クラスの次のコンストラクターは正常にA機能します。
A::A() : t(io) {
// do stuff
}
しかし、私がこれを書くとき:
A::A() {
t(io);
// do stuff
}
次のエラーが表示されます。
エラー: '(boost::asio::deadline_timer {aka boost::asio::basic_deadline_timer}) の呼び出しに一致しません (boost::asio::io_service&)
おそらく、コピー コンストラクターboost::asio::deadline_timerが定義されていないためです。しかし、メンバー初期化リストの場合はどうなるのでしょうか? コピーコンストラクタを使用していませんか?
クラスコンストラクター内で割り当て/コピーコンストラクターを使用する場合と比較して、メンバー初期化リストで使用されるメカニズムは何かに関して、私の質問はおそらくより一般的にすることができます。