コンストラクターの初期化リストをテンプレートクラスで使用できますか?
-
04-07-2019 - |
質問
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 ++で考える」)。
所属していません StackOverflow