帮我分析一下这个程序的错误啊 谢谢了

zhoutt1989 2009-05-25 11:39:24

#include <iostream>
#include <string>
using namespace std;

class Screen
{
public:
typedef string::size_type index;
Screen& move(index r,index c);
Screen& set(char m);
void display(ostream& os);
private:
string contents;
index cursor;
index height,width;
};

Screen& Screen::move(index r,index c)
{
height=r;
width=c;
cursor=height*width+c;
return *this;
}
Screen& Screen::set(char m)
{
contents[cursor]=m; //这里出错了么?
return *this;
}

void Screen::display(ostream& os)
{
os<<contents;
}

void main()
{
Screen myScreen;
myScreen.move(4,0).set('#').display(cout);
}

点击运行后 提示 运行程序错误!!谢谢了
...全文
68 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
caremsi 2009-05-26
  • 打赏
  • 举报
回复
语法错误
wbgxx 2009-05-26
  • 打赏
  • 举报
回复
contents[cursor]=m 变量应该先说明吧 !这到底是怎么来的呢??
pengzhixi 2009-05-26
  • 打赏
  • 举报
回复
给你个简单的例子吧,string s; s[2]='a';你认为这合适么?s本来就是空的,不包含元素,而你却想通过赋值来改变里面的字符.这肯定不合理
fairchild811 2009-05-26
  • 打赏
  • 举报
回复
没错吧
adventurelw 2009-05-26
  • 打赏
  • 举报
回复
up 1楼
构造函数构造的string都是空的,后边也没有相关的赋值
contents[cursor]属于未定义的内容。
pengzhixi 2009-05-25
  • 打赏
  • 举报
回复
给你解答了啊,编译器给你的构造函数构造了一个空的contents,既然是空的contents,你怎么可以给它里面的字符赋值呢

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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