最近、私は古典的なスネークゲームのリメイクに取り組んでいます。今回は、スネークのテールのリンクリストの代わりにデキュを採用しました。私はテールセグメントを作成し、それをデュークの前で取り除き、奇妙なエラーを取得しようとします。C++:std :: dequeへの呼び出しで一致する関数がありません<SnakePart> :: emplace_front
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();
}
Snake.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
、ソースへのリンクを投稿しないでください、コピー&ペーストを行うことができ、それが意味もコピーコンストラクタを持って
を使用できることを意味2つの
int
の引数を取るコンストラクタを持っています質問の本文に直接ソース。 [良い質問をする方法を読む](http://stackoverflow.com/help/how-to-ask)(また、[最小限で完全であり、検証可能な例](http:// stackoverflow.com/help/mcve))。 –@JoachimPileborg質問にコードを追加します –