错误:"期望类型说明符"

时间:2018-03-05 04:58:27

标签: c++ struct sfml

我收到此错误,并且在尝试创建新对象指针时我不知道原因。

以下是我的标题类

的代码
#ifndef CURSOR_H_INCLUDED
#define CURSOR_H_INCLUDED
#include <SFML\Graphics.hpp>
#Include "Mango.h"
#include <stack>

using namespace sf;
using namespace std;

struct cursor{
 Texture tCursor;
 Sprite sCursor;
 stack<Mango*> inv;
 float money;
 void Sell();
 cursor();
 ~cursor();
};

#endif CURSOR_H_INCLUDED

主要是尝试这样做

cursor * cursor = new cursor();

但它给了我这个错误。

1 个答案:

答案 0 :(得分:3)

您已将指针命名为与类名相同的名称。你不能这样做:

struct Foo {int a;};

int main()
{
        Foo* Foo = new Foo(); // Because
// After here ^^^ Foo is no longer a type but a variable. And you can't "new"
// a variable. Thanks to user4581301 for teaching me this.

    return 0;
}

在:

cursor * cursor = new cursor();
         ^^^^^^

将指针名称从光标更改为其他名称。

P.S。有趣的是,感谢user4581301我知道变量CAN与用户定义的类型具有相同的名称,但显然是个坏主意。所以:

Foo Foo; // Fine
Foo.a = 7; // Fine
Foo newFooObj; // Doesn't make sense, Foo is no longer seen as a type