primer练习16.14

template<int h,int w>
class screen {
public:
    screen():content(h*w,'1') {}
    screen(char c):content(h*w,c){}
    friend class window;
    char get() const {
        return content[cur];
    }
    inline char get(int, int) const;
    screen& clear(char = bkground);
    
private:
    static const char bkground = ' ';
public:
    screen& move(int r, int c);
    screen& set(char);
    screen& set(int, int, char);
    screen& display(ostream& os)
    {
        do_display(os);
        return *this;
    }
private:
    void do_display(ostream& os) const { os << content;}
    int cur = 0;
    string content;
};
template<int h,int w>
screen<h, w>& screen<h, w>::clear(char c)
{
    content = string(h * w, c);
    return *this;
}
template<int h, int w>
inline screen<h, w>& screen<h, w>:: move(int r, int c)
{
    int row = r * w;
        
    cur = row + c;
    return *this;
}
template<int h, int w>
 char screen<h, w>::get(int r, int c) const
{
    int row = r * w;

    
    return content[row+c];
}
 template<int h, int w>
 inline screen<h, w>& screen<h, w>::set(char c)
 {
     content[cur] = c;
     return *this;
 }
 template<int h, int w>
 inline screen<h, w>& screen<h, w>::set(int r,int col,char ch)
 {
     content[r*w+col] = ch;
     return *this;
 }
 int main()
 {
     screen<5, 3> myscreen;
     myscreen.display(cout);
     cout << endl;

     myscreen.move(4, 0).set('#').display(cout);
     cout << endl;

     screen<5, 5> nextscreen('X');
     nextscreen.move(4, 0).set('#').display(cout);
     cout << "\n";
     nextscreen.display(cout);
     cout << endl;

     myscreen.clear('Z').display(cout);
     cout << endl;
     myscreen.move(4, 0);
     myscreen.set('#');
     myscreen.display(cout);
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值