我在标题中有一个enum

namespace somespace
{
    namespace internal
    {

        class SomeClass
        {
            public:

                typedef enum
                {
                    kNone = 0,
                    kKaka = 1,
                }SomeEnum;
        }
    }
}


在cpp中,有时我们使用带有辅助函数的匿名名称空间。

#include <somespace/internal/SomeClass.h>

using somespace::internal;

namespace
{

    bool helpMe(SomeEnum& foo) //does not recognize the enum in the header
    {

    }
}

void SomeClass::memberMethod
{

}


但是我无法访问SomeEnum文件中的.cpp。这是为什么?
如何解决这个问题而又不污染internal命名空间?

最佳答案

SomeEnum的作用域是声明它的类名。要使用它,您需要SomeClass::SomeEnum。假定SomeClass在您拥有的范围内是可访问的。如果不是,那么您需要somespace::internal::SomeClass::SomeEnum

关于c++ - C++中的匿名 namespace 无法访问 header ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35226862/

10-10 20:44