错误:“预期类型说明符”[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误:“预期类型说明符”[关闭]相关的知识,希望对你有一定的参考价值。

我收到此错误,我不知道为什么在尝试创建新的对象指针时。

这是我的标题类的代码

#ifndef CURSOR_H_INCLUDED
#define CURSOR_H_INCLUDED
#include <SFMLGraphics.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();

但它给了我这个错误。

答案

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

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();
         ^^^^^^

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

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

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

以上是关于错误:“预期类型说明符”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥编译器会抛出“预期类型说明符”?

学习 PyQt5。在我的代码片段中找不到错误 [关闭]

片段事务中的实例化错误

在模板类实现中使用结构模板

将字符串数据从Activity发送到片段[关闭]

如何使用tablayout和片段管理java文件[关闭]