事件类型不是类或命名空间

EventType is not a class or namespace

本文关键字:命名空间 类型 事件      更新时间:2023-10-16

我正在尝试使用SFML和本教程制作一个简单的2D游戏。以下是我在本教程中当前进度的代码:我在使用类事件的枚举 EventType 时遇到问题。成员变量名称为类型。

 #include "stdafx.h"
 #include "SplashScreen.h"

 void SplashScreen::Show(sf::RenderWindow & renderWindow)
 {
    sf::Image image;
    if(image.LoadFromFile("images/SplashScreen.png") != true)
    {
     return;
    }
   sf::Sprite sprite(image);
   renderWindow.Draw(sprite);
   renderWindow.Display();
   sf::Event event;
   while(true)
   {
     while(renderWindow.GetEvent(event))
     {
       if( event.Type == sf::Event::EventType::KeyPressed
         || event.Type == sf::Event::EventType::MouseButtonPressed
         || event.Type == sf::Event::EventType::Closed )
       {
          return;
       }
     }
   }
 }

这是我的stdafx.h:

 // stdafx.h : include file for standard system include files,
 // or project specific include files that are used frequently, but
 // are changed infrequently
 //
 #ifndef STDAFX_H
 #define STDAFX_H

 #include <stdio.h>

 // TODO: reference additional headers your program requires here
 #include <SFML/System.hpp>
 #include <SFML/Graphics.hpp>
 #include <SFML/Window.hpp>
 #include <SFML/Audio.hpp>
 #include <map>
 #include <iostream>
 #include <cassert>
 #endif //STDAFX_H

似乎它已经包含了 Event.hpp,因为我已经为事件进行了自动编译。鼠标按钮按下,所有其他枚举值显示在代码块中sf::Event::EventType::范围之后。我还检查了Event.hhpp文件,它是正确的。我不明白为什么编译器会惹我。

当我尝试删除范围并只写"事件。类型 == 按键",编译器说"未在此范围内声明按键"。我在 Ubuntu 12.04 上运行代码块 10.05。

知道出了什么问题吗?

编辑:这是我的事件.hpp

枚举的名称不是作用域。只需将sf::Event::EventType::KeyPressed替换为sf::Event::KeyPressed即可。

同事,你不直接包括SF.h吗?喜欢这个:

包括

////

//并使用命名空间:使用命名空间 sf;

////避免使用 sf::

在整句之前=>////sf::Event....

while(window.isOpen()){//.enter code here..

Event event
while(window.pollEvent(event)
{`enter code here`
if(event.type == Event::KeyPressed)
  if(event.key.code == Keyboard::Up)
  `enter code here`