1

次のクラス宣言があります。

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が定義されていないためです。しかし、メンバー初期化リストの場合はどうなるのでしょうか? コピーコンストラクタを使用していませんか?

クラスコンストラクター内で割り当て/コピーコンストラクターを使用する場合と比較して、メンバー初期化リストで使用されるメカニズムは何かに関して、私の質問はおそらくより一般的にすることができます。

4

2 に答える 2