Noob在这里,抱歉错误标题。
我正在尝试从Bjarne Stroustrup的'The C ++ Programming Language'编译这段代码,但是CodeBlocks一直在向我抛出这个错误。
代码是关于检查矢量函数中保存的数组的范围。
#include <iostream>
#include <vector>
#include <array>
using namespace std;
int i = 1000;
template<class T> class Vec : public vector<T>
{
public:
Vec() : vector<T>() { }
T& operator[] (int i) {return vector<T>::at(i); }
const T& operator[] (int i) const {return vector<T>::at(i); }
//The at() operation is a vector subscript operation
//that throws an exception of type out_of_range
//if its argument is out of the vector's range.
};
Vec<Entry> phone_book(1000); //this line is giving me trouble
int main()
{
return 0;
}
它给了我这些错误:
我需要改变什么?我如何申报Vec Entry?
答案 0 :(得分:0)
老实说,我怀疑你直接从Bjarne复制了这段代码。但问题是错误说的是:Entry
未声明。
如果您只是想玩这个例子,可以尝试例如
Vec<int>
代替。但是,还有一个小问题(这是让我相信你改变了Bjarnes代码的问题):你的类Vec
没有构造函数需要int
,因此
Vec<int> phone_book(1000);
无法正常工作。只需提供这个构造函数:
Vec(int size) : vector<T>(size) {}
它应该有效。