将一个类对象存入到vector中时出现error c2664错误

galianjin 2016-02-29 03:31:55
#include<string>
#include<iostream>
#include<vector>
using namespace std;
class Screen
{
public:
friend class Window_mgr;
using pos = std::string::size_type;
Screen() = default;
Screen(pos ht, pos wd) :height(ht), width(wd), contents(ht*wd, ' '){}
Screen(pos ht, pos wd,char c) :height(ht), width(wd) ,contents(ht*wd,c) {}
char get() const
{
return contents[cursor]; //类内声明,隐式内联 返回值读取光标处字符
}
inline char get(pos ht, pos wd) const; //显式内联
Screen& move(pos r, pos c);
void somemember() const;
inline Screen& set(char);
inline Screen& set(pos, pos, char);
Screen& display(std::ostream& out){ do_display(out); return *this; };
const Screen& display(std::ostream& out) const { do_display(out); return *this; };

private:
pos cursor = 0;
pos height = 0, width = 0;
std::string contents;
mutable string::size_type access_ctr; //在const对象内也可以被修改access_ctr
void do_display(std::ostream& out) const{ out << contents; }
};
class Window_mgr
{
public:
using ScreenIndex = std::vector<Screen>::size_type;
void clear(ScreenIndex);
private:
vector<Screen> screens = { Screen(24, 80, ' ') }; //问题出在这一行
};
...全文
531 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
SHA-ZI 2017-09-22
  • 打赏
  • 举报
回复
vector这样赋值的语法是对的,我这里也编译了,没有任何问题,可否贴出自己的编译器类型和版本
赵4老师 2017-09-21
  • 打赏
  • 举报
回复
买入→迈入 我不做股票呀?
还似少年游 2017-09-20
  • 打赏
  • 举报
回复
这个示例本身就不是一个好的示例。 你可以看一下对应习题集的7.32题,它自己的答案里就没有用vector。
flying_music 2016-11-10
  • 打赏
  • 举报
回复
C++没有C++的样子了,唉。。。。换个高版本编译器试试吧
Echoes_smile 2016-11-10
  • 打赏
  • 举报
回复
楼主解决了吗,我也在学,也遇到了,不知道如何解决
赵4老师 2016-02-29
  • 打赏
  • 举报
回复
不建议C/C++初学者冒然买入C++14的门槛。
勤奋的小游侠 2016-02-29
  • 打赏
  • 举报
回复
引用 3 楼 galianjin 的回复:
[quote=引用 2 楼 lovesmiles 的回复:] 在一个c++类原型里面给它的成员赋值,这样真的好吗? 感觉你这是在写c#的代码。
正在学c++,看到c ++primer 第246页里的举的例子是这样的,因为Window_mgr类比较小所以就直接在里面赋值了没用构建函数,语法觉得没问题,但不知道为什么报错[/quote] 换个支持c++14的编译器试一试
galianjin 2016-02-29
  • 打赏
  • 举报
回复
引用 2 楼 lovesmiles 的回复:
在一个c++类原型里面给它的成员赋值,这样真的好吗? 感觉你这是在写c#的代码。
正在学c++,看到c ++primer 第246页里的举的例子是这样的,因为Window_mgr类比较小所以就直接在里面赋值了没用构建函数,语法觉得没问题,但不知道为什么报错
勤奋的小游侠 2016-02-29
  • 打赏
  • 举报
回复
在一个c++类原型里面给它的成员赋值,这样真的好吗? 感觉你这是在写c#的代码。
galianjin 2016-02-29
  • 打赏
  • 举报
回复
最后一行的句子报错: 错误 1 error C2664: “std::vector<Screen,std::allocator<_Ty>>::vector(std::initializer_list<Screen>,const std::allocator<_Ty> &)”: 无法将参数 1 从“Screen”转换为“const std::allocator<_Ty> &”

64,685

社区成员

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

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