代码出自书本《accelerated C++》11章,错误输出如图
41行即是定义allocator变量那一行,不知道我这样定义哪里不对,请大神粑粑们明示,提前谢过。
#pragma once
#include<memory>
template <class T> class Vec
{
public:
typedef T* iterator;
typedef const T* const_iterator;
typedef size_t size_type;
typedef T value_type;
//构造函数。需要调用create()分配内存
Vec(){create();}
explicit Vec(size_type n,const T&t=T()){create(n,t);}
Vec(const Vec& v){create(v.begin(),v.end());}
Vec& operator=(const Vec&);
T& operator[](size_type i){return data[i];}
const T& operator[](size_type i)const{return data[i];}
~Vec(){uncreate();}
//添加元素
void push_back(const T& t);
//获得容器元素数
size_type size() const{return avail-data;}
//获得首指针
iterator begin(){return data;}
const_iterator begin() const{return data;}
//获得尾指针
iterator end(){return avail;}
const_iterator end() const{return avail;}
private:
iterator data; //Vec中的首元素
iterator avail; //Vec中的末元素最后一个元素
iterator limit; //分配过内存的最后一个元素后面一个元素
allocator<T> alloc; //控制内存分配的对象。第41行
//分配内存并进行初始化
void create();
void create(size_type,const T&);
void create(const_iterator,const_iterator);
//删除容器中的元素并释放内存
void uncreate();
//push_back所需的函数
void grow();
void unchecked_append(const T&);
};