Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;无效数组<;T、 N>;下标 < P>我在C++中做了一个基本类/结构集合,它有类书,我没有包括,还有一些,以及结构> >代码>但是,当使用FSCB时,它不能按计划工作:_C++_Arrays_Class_Templates_Struct - Fatal编程技术网

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;