事件类型不是类或命名空间
EventType is not a class or namespace
我正在尝试使用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`
相关文章:
- 从父命名空间重载类型
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何对命名空间限定类型进行类型定义?
- Boost.Python :C++模板类型匹配的嵌套命名空间
- 如何为缺少预定义运算符而不扩展命名空间"std"的标准类型定义运算符>> (istream &, ...)?
- 如何理解c++中在命名空间内部定义的枚举类型enum
- 为什么找不到使用命名空间中定义的类型实例化的 std::weak_ptr 的重载运算符==?
- C++ ,错误:命名空间'std'中的'shared_ptr'未命名模板类型
- 错误:命名空间"std"中没有名为"invoke_result_t"的类型 GCC-7
- 命名空间中的'bad_cast' 'std' 未命名类型错误
- 使用用作类型 C++ 的命名空间
- 命名空间'std'中的'vector'没有模板类型
- C++11 内联命名空间与直接在封闭命名空间中嵌入类型
- 为什么类型特征不适用于命名空间范围内的类型?
- 如何使函数模板仅适用于特定命名空间中的类型
- 在全局命名空间中重载不依赖于用户定义类型的标准定义类型的运算符是否格式正确?
- 在C 中重新解析命名空间内的全局类型
- 位置实用程序例程与使用类型相同的命名空间
- MISRA C++规则 14-5-1:在与类型关联的命名空间中声明的泛型函数模板的名称
- 基于命名空间类型和primitif类型的成员函数重载