C ++无效数组<t,n =“”>下标</t,>

时间:2013-12-27 11:54:12

标签: c++ arrays class templates struct

我在C ++中创建了一个基本的类/结构集合,其中包含我没有包含的类Book,还包含其他一些,以及struct {{1} } 即可。但是,使用FixedSizeBookCollection时,它无法按计划运行:

books.h

FSCB

main.cpp

template<size_t Size> struct FixedSizeBookCollection : private std::array<const Book*, Size>{
    FixedSizeBookCollection(const char* Name) : name_(Name){}
    void operator+=(const Book& Book)try{
        if((*this).size() > Size){
            std::ostringstream errorMessage;
            errorMessage << "The FixedSizeBookCollection " << name_ << "'s size capacity has been overfilled" << std::endl;
            throw std::exception(errorMessage.str().c_str());
        }
        /* Line 97 - */ (*this).at(currentPos++) = &Book;
    }catch(const std::exception& e){
        std::ostringstream errorMessage;
        errorMessage << e.what() << " - on line (approx.) " << (__LINE__ -3);
        throw std::exception(errorMessage.str().c_str());
    }
private:
    const char* name_;
    int currentPos;
};

但我收到错误:

FixedSizeBookCollection<5> Collection("My Fixed Size Collection"); Collection += MyBook;

有什么问题?

1 个答案:

答案 0 :(得分:2)

您的currentPos未初始化。它可以有任何价值。添加到您的c-tor初始化此变量0。