错误:输入末尾的预期非限定 ID

Error: expected unqualified ID at the end of input

提问人:guava 提问时间:1/29/2023 更新时间:1/29/2023 访问量:203

问:

所以,长话短说:我开始使用“devkitPro”,这是一个 C++ 库,但是我以前从未用 C++ 编码过,但我用 C# 编码,这与我非常相似,所以我开始学习一些关于 C++ 的知识,尝试编写一个原型按钮类,创建一个布尔方法,如果单击的区域与它发生冲突,该方法将返回 true, 然后当我尝试编译我编写的代码时,我收到了这个错误。

因此,像往常一样,我做了每个人在看到错误后都会做的事情:我用谷歌搜索它。显然,此错误是由于语法错误引起的。到目前为止,一切都很好,之前已经处理过了,没有太大的问题。但是,问题在于错误指向一个该死的“}”,如果我删除将导致另一个错误,因为需要“}”来结束方法。我尝试了许多不同的方法来解决这个问题,但我根本找不到问题所在。这是有问题的脚本(错误指向第 20 行)

#include <nds.h>
#include <nds/arm9/video.h>
#include <nds/arm9/sprite.h>
#include <stdio.h>
#include <string>
using namespace std;

class Button{
    public:
        string name;
        uint posX;
        uint posY;
        uint sizX;
        uint sizY;
        bool show;
    
    bool pressed(uint touchX, uint touchY)
    {
        return (show == true && posX + sizX > touchX && posY + sizY > touchY && posX < touchX + 1 && posY < touchY + 1);
    } //the error message points to this line
}

或者更具体地说,这部分代码

bool pressed(uint touchX, uint touchY)
{
    return (show == true && posX + sizX > touchX && posY + sizY > touchY && posX < touchX + 1 && posY < touchY + 1);
} //the error points to this line

所以呃......任何人都知道这里出了什么问题。谢谢。我对 C++ 了解不多,我所知道的只是因为它类似于 C#。

(不相关,但是,字符串变量类型有什么特别之处,以至于它需要自己的命名空间才能正常工作?

我试图编写一个布尔方法,该方法根据鼠标光标是否与它对齐而返回 true 或 false,但我无法确切地看到它是否有效,因为一个错误我不明白到底是什么原因造成的。

C++ 方法 错误处理 语法错误

评论

2赞 Retired Ninja 1/29/2023
你似乎没有在它的最后。这在 C++ 中是必需的。 也不标准。这是从哪里来的?就命名空间而言,您来自 C#,其中所有系统库都在命名空间中,为什么 C++ 会做类似的事情让您感到惊讶?在你养成太多坏习惯之前,你应该阅读为什么“使用命名空间标准”被认为是不好的做法?class;class Foo { };uint
0赞 guava 1/29/2023
退休的忍者谢谢。我问字符串命名空间的事情,因为在 C# 中字符串包含在“系统”命名空间中,但在 C++ 中您需要包含一个单独的命名空间。再次,第一次学习 C++。另外,我指的不是“使用命名空间标准”,而是“#include < string>”,我所说的“#include”是C++等同于 C# 的“使用”。
1赞 molbdnilo 1/29/2023
#include从字面上看,仅表示“在此处插入此文件的内容”。C# 和 C++ 之间的相似之处主要是标点符号和一些关键字的拼写。从一本好书开始,不要假设看起来一样的东西是一样的,也不要猜测。
0赞 guava 1/29/2023
molbdnilo 好的,谢谢你的帮助。

答: 暂无答案