我在嵌套命名空间中遇到前向声明问题。我在嵌套命名空间中为类或结构放置了一个前向声明,当我尝试在该命名空间的父级中使用它时,我得到一个错误。我不知道该怎么做。
这就是代码的样子:
#include "Data\Types.hpp"
namespace GameEngine
{
class Console
{
public:
class Renderer : public RenderComponent2D
{
public:
Renderer(Console*, const GameEngine::DataProcessing::FontData*);
//...
并在Data \ Types.hpp中:
namespace GameEngine
{
namespace DataProcessing
{
struct FontData;
//...
并且MinGW给出的错误是:
'FontData' in namespace 'GameEngine::DataProcessing' does not name a type
感谢您对此问题的任何帮助或建议。
答案 0 :(得分:2)
我最近遇到了一个类似的问题,结果是一个未封闭的命名空间,例如
namespace A {
namespace B {
class C {};
// failed to close both namespaces properly here
让我离开的一点是,未封闭的命名空间实际上是在我的cpp文件中包含的辅助文件中。尝试在标题中查看是否有任何未关闭的命名空间。
答案 1 :(得分:1)
可能是方法声明中的问题。您已进入GameEngine命名空间:
namespace GameEngine
{
class Console
但是在声明中你也使用了这个命名空间:
Renderer(Console*, const GameEngine::DataProcessing::FontData*);
没有GameEngine尝试:
Renderer(Console*, const DataProcessing::FontData*);