问题1:不存在从int 转换到triangular的适当构造函数问题2:没有与这些操作数匹配的"<<"运算符操作数类型为:std::ostream<
triangular.h
#include<iostream>
#include<vector>
using namespace std;
class triangular
{
public:
int length() const { return _length; }
int beg_pos() const { return _beg_pos; }
int elem(int pos)const;
bool next(int &val)const;
void next_reset()const { _next = _beg_pos - 1; }
private:
int _length;
int _beg_pos;
mutable int _next;
static vector<int> _elems;
};
int triangular::elem(int pos) const
{
return _elems[pos - 1];
}
bool triangular::next(int &value) const
{
if (_next < _beg_pos + _length - 1)
{
value = _elems[_next++];
return true;
}
return false;
}
主函数如下:
#include<iostream>
#include<vector>
#include"triangular.h"
using namespace std;
int sum( triangular &trian)
{
if (!trian.length())
return 0;
int val, sum = 0;
trian.next_reset();
while (trian.next(val))
sum += val;
return sum;
}
int main()
{
triangular tri1(4);
cout << tri1 << "--sum of elements:"
<< sum(tri1)<<endl ;
triangular tri2(4, 3);
cout << tri2 << "--sum of elements:"
<< sum(tri2) << endl;
triangular tri3(4, 8);
cout << tri3 << "--sum of elements:"
<< sum(tri3) << endl;
}
这要怎么改,麻烦给说一下