我的前向声明和命名空间有问题。以下示例代码:
namespace Waalkes
{
class Otto;
}
namespace Comedian
{
class MyClass : public ...
{
...
Waalkes::Otto getFun();
...
}
}
这通常不成问题," Waalkes :: Otto getFun()"是指直接向前发表申报。不幸的是,一些程序员决定也有一个命名空间"" Comedian :: Waalkes"这是在此代码中包含的一个标头中定义的。所以编译器试图找到" Comedian :: Waalkes :: Otto"哪个不存在。
因为它不是摆脱这些丑陋的双重名称的选择:我有什么选择?是否有可能以某种方式定义getFun(),以便其返回值引用正确的命名空间" Waalkes :: Otto"而不是"喜剧演员:: Waalkes :: Otto"因为封闭的"命名空间Comedian"?某种父命名空间占位符可能是吗?
谢谢!
答案 0 :(得分:1)
您可以使用Waalkes
专门引用全局命名空间中的::Waalkes
命名空间。因此,如果您想要该命名空间中的Otto
类,请执行::Waalkes::Otto
。
但是,你仍然会遇到问题。您不能在函数定义中将不完整类型用作返回类型。