C++;无效数组<;T、 N>;下标 < P>我在C++中做了一个基本类/结构集合,它有类书,我没有包括,还有一些,以及结构> >代码>但是,当使用FSCB时,它不能按计划工作:
书C++;无效数组<;T、 N>;下标 < P>我在C++中做了一个基本类/结构集合,它有类书,我没有包括,还有一些,以及结构> >代码>但是,当使用FSCB时,它不能按计划工作:,c++,arrays,class,templates,struct,C++,Arrays,Class,Templates,Struct,书 模板结构FixedSizeBookCollection:private std::array{ FixedSizeBookCollection(const char*Name):名称(Name){ void运算符+=(常量簿和簿)重试{ 如果((*此).size()>size){ std::ostringstream错误消息; errorMessage您的currentPos未初始化。它可以有任何值。将此变量的初始化值添加到您的c-tor中0。您必须告诉我们“第97行”在哪里clang编译得
模板结构FixedSizeBookCollection:private std::array{
FixedSizeBookCollection(const char*Name):名称(Name){
void运算符+=(常量簿和簿)重试{
如果((*此).size()>size){
std::ostringstream错误消息;
errorMessage您的currentPos
未初始化。它可以有任何值。将此变量的初始化值添加到您的c-tor中0。您必须告诉我们“第97行”在哪里clang编译得很好,除了异常抛出之外,我必须将基类std::exception
的抛出更改为具体异常类的抛出,比如std::runtime\u error,或者您可以选择的任何异常类:注意,我说的是compiles。由于在进行边界检查,您还应该检查初始化是否为F我只是说不出你说的是编译错误还是运行时错误。
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;