'ClassName'没有命名类型

gho*_*der -2 c++

我已经看到了类似的答案,但我似乎无法通过查看这些例子(例如这个那个)来解决我的问题.

所以,我有这个.

#ifndef INCLUDE_CLASS_NAME
#define INCLUDE_CLASS_NAME

#include <B.h>

using namespace C;

D::DPtr myvariable;  <-- Error in here

#endif
Run Code Online (Sandbox Code Playgroud)

在包括Bh我有这个:

namespace C{
namespace E{

class D
{
  public:
      typedef shared_ptr<D> DPtr;
}

} //end of namespace E
} // end of namespace C
Run Code Online (Sandbox Code Playgroud)

为什么我在上述行中收到此错误:

'D'  does not name a type
Run Code Online (Sandbox Code Playgroud)

我包含.h文件,它定义了类.我错过了什么?

eml*_*lai 5

符号D位于命名空间内E,位于命名空间内C,因此完全限定名称为C::E::D.

所以要么: