コンストラクターの初期化リストをテンプレートクラスで使用できますか?

StackOverflow https://stackoverflow.com/questions/230790

質問

C ++テンプレートに関するほとんどの本は、テンプレートクラスのコンストラクターで初期化リストを使用することが可能かどうかについて何も語っていないことがわかりました。

たとえば、次のようなコードがあります:

template <class T>
class Stack {
    T* data;
    std::size_t count;
    std::size_t capacity;
    enum {INIT = 5};
public:
    Stack() {
        count = 0;
        capacity = INIT;
        data = new T [INIT];
    }

コンストラクタを

に置き換えることはできますか

Stack(): count(0), capacity(INIT), data(new T [INIT])
役に立ちましたか?

解決

はい。コンパイラーは別のことを教えてくれましたか?

他のヒント

試してみたところ、VS2008で問題ないことがわかりましたが、一部の優れた著者はそれを行わないため、少し奇妙に見えます(たとえば、Eckelの「C ++で考える」)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top