【发布时间】:2011-07-28 21:11:16
【问题描述】:
这是出现错误的整个代码:
Engine.h
#ifndef ENGINE_H
#define ENGINE_H
#include "DXManager.h"
namespace XEngine
{
class Engine
{
};
}
#endif
DXManager.h
#ifndef DX_MANAGER_H
#define DX_MANAGER_H
namespace XEngine
{
class Engine; // forward declaration
class DXManager
{
public:
void run(Engine *engine);
};
}
#endif
DXManager.cpp
#include <iostream>
#include "Engine.h"
#include "DXManager.h"
using namespace XEngine;
void DXManager::run(Engine *engine)
{
std::cout<<"DXManager::run"<<std::endl;
}
使用这 30 行代码,我遇到了 20 个错误,例如:
'XEngine' : a namespace with this name does not exist
'XEngine' : a symbol with this name already exists and therefore this name cannot be used as a namespace name
syntax error : identifier 'Engine'
很明显,我在这里遗漏了一些重要的东西。我做错了什么?
注意:我知道循环依赖是一件坏事,但在我的特殊情况下,我相信它是相关的。
【问题讨论】:
-
您的代码在编辑后在 MSVC 10 上编译。一定是另一段代码中的另一个错误。
-
确实如此。我想我没有对我的真实代码进行适当的修改。非常感谢您的帮助!
-
错误是来自
dxmanager.cpp还是来自另一个包含engine.h和/或dxmanager.h的编译单元?
标签: c++ class namespaces forward-declaration