visual-studio - 在C++ 类中初始化vector失败的问题?
PHP中文网
PHP中文网 2017-04-17 14:35:53
0
2
606

初学C++,我试着写一个贪吃蛇游戏,代码如下:

#include #include  #include  #include  #include #include using namespace std; class Snake { friend void displaySnake(Snake &s); public: using ssbody = pair, string>; Snake() = default; vector body() const { return snakebody; } private: int lengh=1; //蛇的长度 vector snakebody{make_pair(make_pair(10, 10), "●")}; //蛇的位置和符号 };
void gotoxy(int x, int y) { HANDLE h;//句柄,对象的索引 COORD c;//结构体,坐标值 c.X = x; c.Y = y; h = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(h, c); } void displaySnake(Snake &s) //打印蛇 { for (auto &c : s.snakebody){ gotoxy(c.first.first, c.first.second); //设置光标到保存的坐标处 gotoxy我省略了 cout << c.second; } }

我想用vector snakebody来保存蛇的身体,包括蛇每个点的位置和符号(●代表蛇头,○代表蛇尾)。我希望snakebody开始时总是有一个蛇头(在坐标(10,10)处,符号是●),于是我用make_pair(make_pair(10, 10), "●")初始化snakebody。但是我在main函数中调用时总是失败,main函数代码:

int main() { Snake s; displaySnake(s); }

错误说明:

error C2664: “std::vector>::vector(std::initializer_list,std::string>>,const std::allocator<_Ty> &)”: 无法将参数 1 从“std::pair,const char *>”转换为“const std::allocator<_Ty> &”
PHP中文网
PHP中文网

认证0级讲师

全部回复 (2)
洪涛
void displaySnake(Snake &s) //打印蛇 { //重复使用了s for (auto &s : s.snakebody){ gotoxy(s.first.first, s.first.second); //设置光标到保存的坐标处 cout << s.second; } }

for (auto &s : s.snakebody)这里重复使用了s。。。。。。

运行结果

    Ty80

    把初始化挪到构造函数里去。

    成员变量设定初始值仅适用于字面量类型。 initializer_list这种想太多了。

      最新下载
      更多>
      网站特效
      网站源码
      网站素材
      前端模板
      关于我们 免责声明 Sitemap
      PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!