テンプレートクラスを作成するときに何が起こっているのか、私はやや困惑しています。構築中にメンバ vector_ の容量を 50 (1 回だけ) に設定しようとしていますが、容量が適切に設定されていないようで、どうすればよいのかわかりません。関連するコードのスニペットとコンソール出力を含めました。ご協力ありがとうございました!
ベクターのテンプレート クラス:
template <typename T>
class V
{
public:
V()
{
std::cout << "capacity 1 = " << this->vector_.capacity() << "\n";
};
V(int capacity)
{
this->vector_.reserve(capacity);
std::cout << "capacity 2 = " << this->vector_.capacity() << "\n";
};
int capacity() const { return this->vector_.capacity(); };
private:
std::vector<T> vector_;
};
初期化される R のコンストラクター:
R::R()
{
std::cout << "capacity 0 = " << this->s_.capacity() << "\n";
this->s_ = V< std::vector< std::complex<float> > >(50);
std::cout << "capacity 3 = " << this->s_.capacity() << "\n";
};
R クラスのヘッダー:
class R
{
public:
R();
private:
V< std::vector< std::complex<float> > > s_;
};
コンソールへの出力:
capacity 1 = 0
capacity 0 = 0
capacity 2 = 50
capacity 3 = 0