我在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;
有什么问题?
答案 0 :(得分:2)
您的currentPos
未初始化。它可以有任何价值。添加到您的c-tor初始化此变量0。