【问题标题】:EventType is not a class or namespaceEventType 不是类或命名空间
【发布时间】:2012-12-03 10:48:58
【问题描述】:

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

 #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,因为我已经为事件提供了自动完成功能。 MouseButtonPressed 和所有其他枚举值出现在代码块中 sf::Event::EventType:: 范围之后。我还检查了 Event.hpp 文件,它是正确的。我不明白为什么编译器会惹我。

当我尝试删除范围并只编写“event.Type == KeyPressed”时,编译器会显示“Keypressed 未在此范围内声明”。 我在 Ubuntu 12.04 上运行 Code Blocks 10.05。

知道怎么了?

编辑:This 是我的 Event.hpp

【问题讨论】:

    标签: c++ codeblocks sfml


    【解决方案1】:

    枚举的名称不是范围。只需将sf::Event::EventType::KeyPressed 替换为sf::Event::KeyPressed

    【讨论】:

      【解决方案2】:

      同事,您不直接包含 SF.h 吗?像这样:

      包括

      //////并使用命名空间:using namespace 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`
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-03
        • 1970-01-01
        • 1970-01-01
        • 2014-07-24
        • 2016-03-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多