템플릿 클래스를 만들 때 무슨 일이 일어나고 있는지 다소 당황 스럽습니다. 저는 건설 중에 vector_ 구성원의 용량을 50으로 설정하려고합니다. 그러나 용량이 제대로 설정되지 않았으므로 분명히 어떻게 처리되는지 이해할 수 없습니다. 콘솔 출력뿐만 아니라 관련 코드 스 니펫도 포함 시켰습니다. 도와 줘서 고마워! 벡터C++ 초기화 템플릿 클래스
템플릿 클래스 :이 초기화 R의
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";
};
헤더 :
class R
{
public:
R();
private:
V< std::vector< std::complex<float> > > s_;
};
출력 콘솔 :
capacity 1 = 0
capacity 0 = 0
capacity 2 = 50
capacity 3 = 0
아마도 _copy-constructor_이 누락 되었습니까? 출력을 생성하는 코드는 무엇입니까? –
어떻게 컴파일하나요? 's_'는'V' 타입이고,'capacity' 메소드를 가지고 있지 않습니다 ... –
또한 클래스 V에 대한 참조를 반환합니다. 생성자가 당신의 쓰레기를 혼란스럽게합니다. – johnathon