我尝试创建一个类模板array,它可以接受像50到60,100到200这样的任意边界。
我对编程很陌生,我有一个外行的问题:模板是否有作用域。我试着编译下面的程序
#include <iostream>
#include <vector>
#include <exception>
using namespace std;
template<typename t>
class array
{
private:
size_t size;
int lowerbound, upperbound;
vector<t> data;
public:
array(int , int );
array(const array<t> &);
int operator [](int );
};
template<typename t>
array<t>::array(int lbound, int rbound):
lowerbound(lbound), upperbound(rbound), size(upperbound - lowerbound + 1), data(size)
{
}
array<t>::array(const array<t> & c):
lowerbound(c.lowerbound), upperbound(c.upperbound), size(c.size)
{
data.reserve(size);
}
int array<t>::operator[](int index)
{
if (index < lowerbound || index > upperbound)cout << "fuck" << endl;
else
return data[index - lowerbound];
}在复制构造函数array<T>::array(const array <T> &C)中,它说
T是未声明的.。
我想,因为我刚开始就声明了template <typename t>,所以不需要额外的template<typename t>
以下是我的问题
template <typename t>定义,或者有更好的替代方法。v.reseve(n),其中n在运行时是已知的。发布于 2015-06-02 06:39:17
template<typename t>更像是类或函数的属性,而不是一般声明。在这个意义上,是的,作用域是紧接着的函数或类。template<typename t>https://stackoverflow.com/questions/30588561
复制相似问题