问题1:不存在从int 转换到triangular的适当构造函数问题2:没有与这些操作数匹配的"<<"运算符操作数类型为:std::ostream<

一名CV界的小学生 2017-10-11 09:20:11
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;
}


这要怎么改,麻烦给说一下
...全文
1053 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
paschen 说的两个问题已经解决,定义了triangular的构造函数,现在编译已经没问题了。不过在运行时出现vector subscript out of range.通过百度找到的解释是没有定义vector.
赵4老师 2017-10-12
  • 打赏
  • 举报
回复
《C++编程思想》
paschen 2017-10-12
  • 打赏
  • 举报
回复
没有重载cout输出你这个类对象的<<函数,所以cout << tri2编译器并不知道要帮你怎么去输出
paschen 2017-10-12
  • 打赏
  • 举报
回复
同样没有两个int参数的构造函数,triangular tri2(4, 3);报错
paschen 2017-10-12
  • 打赏
  • 举报
回复
triangular类没有一个构造函数是需要int参数的,所以triangular tri1(4);编译器报错
  • 打赏
  • 举报
回复
你这是来骗分的不;也不见你提出一些具有启发性的回答,上来就是一本书,你这有点忽悠人啊

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧