visual-studio - 在C++ 类中初始化vector失败的问题?
本文介绍了visual-studio - 在C++ 类中初始化vector失败的问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
初学C++,我试着写一个贪吃蛇游戏,代码如下:
#include<iostream>
#include <conio.h>
#include <windows.h>
#include <string>
#include<vector>
#include<utility>
using namespace std;
class Snake
{
friend void displaySnake(Snake &s);
public:
using ssbody = pair<pair<int, int>, string>;
Snake() = default;
vector<ssbody> body() const { return snakebody; }
private:
int lengh=1; //蛇的长度
vector<ssbody> 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<ssbody> snakebody
来保存蛇的身体,包括蛇每个点的位置和符号(●代表蛇头,○代表蛇尾)。我希望snakebody
开始时总是有一个蛇头(在坐标(10,10)处,符号是●),于是我用make_pair(make_pair(10, 10), "●")
初始化snakebody
。但是我在main函数中调用时总是失败,main函数代码:
int main()
{
Snake s;
displaySnake(s);
}
错误说明:
error C2664: std::vector<Snake::ssbody,std::allocator<_Ty>>::vector(std::initializer_list<std::pair<std::pair<int,int>,std::string>>,const std::allocator<_Ty> &): 无法将参数 1 从std::pair<std::pair<int,int>,const char *>转换为const std::allocator<_Ty> &
解决方案
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。。。。。。
运行结果
这篇关于visual-studio - 在C++ 类中初始化vector失败的问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文