在实现一个C++模板类时出现诸多错误,刚入手模板编程,找错找了大半天,未果,纠结中,求助大神们指导,感激不尽。这是一个类声明,定义部分感觉不会出错,大多也类似,只给出了部分
编译错误报告 语法错误 :1. 缺少“;”(在“<”的前面)——报错行1
2: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int——报错行1(我传入模板实参为int)
template class max_subarray;//前置声明
template std::istream &operator>>(std::istream &is, const max_subarray &target)
{
is >> target.varray.push_back();
return is;
}
template
class max_subarray
{
public:
friend std::istream &operator>> (std::istream &is, const max_subarray &target);//友员
max_subarray() = default;//默认构造函数
报错行1 pair get_index() const;//保存索引对
T get_max_sum() const;//获取器
private:
//工具函数
void set_index(const size_t startIndex,const size_t endIndex);//设置器
void set_max_sum(const T maxSum);//设置器
void find_max_every_subarray(const vector &vArray, const size_t start);
void find_max_subarray(const vector &vArray);
//私有成员
pair index_range;
T &max_sum;
vector varray;
};
//类的定义
template
pair max_subarray::get_index() const
{
return{ first, second };
}
template
T &max_subarray::get_max_sum() const
{
return max_sum;
}
template
void max_subarray::set_index(size_t startIndex, size_t endIndex)
{
index_range.first = startIndex;
index_range.second = endIndex;
}