所以我有一些成员变量是一个命名空间中定义的结构的实例的类,并且该同一命名空间内的函数具有一个参数是一个指向上述类的一个实例。C++如何拥有一个依赖于名称空间的类以及依赖于该类的名称空间?
这看起来像:
SomeClass.h
#ifndef SOME_CLASS_H
#define SOME_CLASS_H
include "SomeNamespace.h"
class SomeClass
{
private:
SomeNamespace::SomeStructure instance1, instance2;
...
SomeNamespace.h
#ifndef SOME_NAMESPACE_H
#define SOME_NAMESPACE_H
#include "SomeClass.h"
namespace SomeNamespace
{
namespace AnotherNamespace
{
void SomeFunction(SomeClass *pSomeClass);
}
struct SomeStructure
{
...
}
...
我收到的错误:
Error C2065 'SomeClass': undeclared identifier
Error C2653 'SomeNamespace' : is not a class or namespace name
相关的第一个错误:
void SomeFunction(SomeClass *pSomeClass);
第二误差涉及:
SomeNamespace::SomeStructure instance1, instance2;
我通过添加前向声明固定在第一错误 '类SomeClass的;'该文件的顶部:
SomeNamespace.h
#ifndef SOME_NAMESPACE_H
#define SOME_NAMESPACE_H
#include "SomeClass.h"
class SomeClass;
namespace SomeNamespace
{
namespace AnotherNamespace
{
void SomeFunction(SomeClass *pSomeClass);
}
struct SomeStructure
{
...
}
...
我试图修正错误二做同样的事情的命名空间和结构:
SomeClass.h
#ifndef SOME_CLASS_H
#define SOME_CLASS_H
include "SomeNamespace.h"
namespace SomeNamespace
{
struct SomeStructure;
}
class SomeClass
{
private:
SomeNamespace::SomeStructure instance1, instance2;
...
做命名空间上向前声明和结构中给了我这些错误:
'SomeClass::instance1' uses undefined struct 'SomeNamespace::SomeStructure'
'SomeClass::instance2' uses undefined struct 'SomeNamespace::SomeStructure'
我已经搜索了这个问题发表其他用户,但我一直不成功的定位后。
如果任何人有这个问题的问题,感觉他们需要严重评分,那么也请添加评论,为什么它是一个糟糕的问题,以帮助我避免下次犯同样的错误。
谢谢大家提前对您有所帮助。
经典。请搜索SO递归包含或头文件组织。 –
请注意,您的'SomeStructure'前向声明仅在名称空间SomeNamespace内,而不在SomeNamespace :: AnotherNamespace内,SomeClass正在尝试使用它。 –
乔希这是一个打字错误,而不是实际的代码是如何。感谢您指出这一点,我编辑了主要帖子来反映这一点。 – MikeO