gpt4 book ai didi

C++:没有用于调用 std::deque::emplace_front 的匹配函数

转载 作者:行者123 更新时间:2023-11-27 22:48:47 25 4
gpt4 key购买 nike

最近我一直在努力重制我对经典贪吃蛇游戏的重制,这次使用双端队列而不是蛇尾的链表。我构造了一个尾段并尝试将它放在双端队列的前面,结果出现了一个奇怪的错误。

no matching function for call to 'std::deque<SnakePart>::emplace_front(<brace-enclosed initializer list>)'|

因为我对 C++ 还是很陌生,所以我不知道为什么会出现这个错误。如果有人能帮助我解决这个难题,我们将不胜感激。

SnakePart.cpp
http://pastebin.com/verR9bpn

Snake.h
http://pastebin.com/XUyNAVKK

最小完整且可验证的示例:

#include <deque>

struct Test {
Test(int x, int y) : x(x), y(y){}
int x;
int y;
};

int main () {
int x = 4, y = 5;

std::deque<Test> tester;
tester.emplace_front({x, y});
return 0;
}

SnakePart.cpp

#include "Snake.h"
#include <deque>

void SnakePart::advance(int x, int y, bool loose_tail = true) {
parts.emplace_front({x, y});

if(loose_tail)
parts.pop_back();
}

蛇.h

#ifndef SNAKE_H_INCLUDED
#define SNAKE_H_INCLUDED

#include <deque>

class SnakeHead {
private:
int posX, posY;

// Snake head functions
void input();
void movement();
};

class SnakePart {
private:
std::deque<SnakePart> parts;

void advance(int x, int y, bool loose_tail);
};

#endif // SNAKE_H_INCLUDED

最佳答案

emplace_front函数接受它的参数并传递给包含的对象中合适的构造函数。 Test 类没有采用单个 initializer-list 的构造函数争论。它有一个带有两个 int 参数的构造函数,这意味着您可以使用

tester.emplace_front(x, y);

它还有一个复制构造函数,这意味着你可以这样做

tester.emplace_front(Test{x, y});

关于C++:没有用于调用 std::deque<SnakePart>::emplace_front 的匹配函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40001846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com