编译错误:在"&"标记之前应为")"
Compilation Error : expected ‘)’ before ‘&’ token
这是我真的不明白的事情:我没有看到任何实际上使这个错误容易发生的事情。
这是类:
namespace Engine_Main {
class SceneManager
{
public:
SceneManager(Engine& engine);
void createScene();
private:
Ogre::SceneManager * mSceneMgr;
};
}
以及其他一些类供参考:
#ifndef ENGINE_H
#define ENGINE_H
#include <OGRE/OgreSceneManager.h>
#include <OGRE/OgreRoot.h>
#include "scenemanager.h"
#include "playerinput.h"
namespace Engine_Main {
class Engine
{
public:
Engine();
~Engine();
void initGameLoop();
PlayerInput * getPlayerInput();
PlayerMovement * getPlayerMovement();
Ogre::Root * getOgreRoot();
private:
//fields
PlayerInput * mPInput;
PlayerMovement * mPMovement;
Ogre::Root * mRoot;
//methods
void registerInput();
void createScene();
void renderPosition();
};
}
#endif // ENGINE_H
#include "engine.h"
namespace Engine_Main {
/**********/
/* PUBLIC */
/**********/
PlayerMovement * Engine::getPlayerMovement() {
return mPMovement;
}
PlayerInput * Engine::getPlayerInput() {
return mPInput;
}
Engine::Engine() {
mPInput = new PlayerInput();
mPMovement = new PlayerMovement();
mRoot = new Ogre::Root("cfg/plugins.cfg", "cfg/engine.cfg", "cfg/engine.log");
}
Engine::~Engine(){
if (mPInput) {
delete mPInput;
}
if (mRoot) {
delete mRoot;
}
}
void Engine::createScene() {
}
}
我的问题
我做错了什么?
您是否在"scenemanager.h"
中缺少Engine
的(前向)声明?当编译器解析:
...
SceneManager(Engine&);
...
需要声明Engine
类型。在声明SceneManager
类之前,您可能需要像class Engine;
这样的前向声明。
相关文章:
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- std::is_base_of表示ctor编译错误
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- Qt Cmake 错误编译"GuiSupportQt not found"
- Opengl 精度转换错误编译错误 E0415
- 库将ARM架构错误编译为架构X64
- RT 音频 Mac 错误 g++ 编译错误
- 错误编译Boost.log
- 错误编译QT创建者 / QT窗口小部件示例
- 错误编译MIPS32
- Visual Studio 2013 中的错误(编译和运行代码)
- 链接错误编译qt项目在visual 2010
- 无法用模板错误编译nsgmls
- 奇怪的错误.编译失败
- 如果有人调用c++中的方法,则强制错误(编译时)
- 来自autoconf测试的错误编译命令
- 时间限制超出错误C++编译
- SFML 2.3 和 CodeBlocks 错误编译