deque.push_front() 给出错误"expression must have class type"



我试图将带有指针的deque初始化给用户定义的结构,以消除不必要的复制。

我的代码看起来像这样:

Tile *start = new Tile(0,0,0, 'q', nullptr);
deque<Tile*> search();
search.push_front(start);

上面的代码位于main.cpp。

瓷砖结构看起来像这样,并包含在hunt.h:

struct Tile
{
    int row; int col; int farm;
    char tile;
    Tile * added_me;
    Tile(int f, int r, int c, char t, Tile * a) :
        farm(f), row(r), col(c), tile(t), added_me(a){}
};

我程序的布局如下:

main.cpp:包括" io.h"

io.h:包括" hunt.h",各种标准库

Hunt.H:包括向量,Deque,Tile Struct

但是,当我尝试push_front(start):表达式必须具有类型时,我会在main.cpp中遇到一个错误。让我知道是否是这种情况。否则,我不确定如何解决此错误。

预先感谢!

deque<Tile*> search();

您实际上并未声明名为searchdeque<Tile*>并使用默认构造函数。相反,C 将其解释为一个名为search的函数的函数声明,该函数没有参数并返回deque<Tile*>。您无法在功能上调用push_front,因此错误。

要解决此问题,要么从变量的声明中删除(),要么用{}替换它们(如果您使用的是C 11兼式编译器)。这将导致C (正确)解释您要声明一个变量。

希望这会有所帮助!

相关内容

最新更新