gpt4 book ai didi

c++ - C++中的匿名命名空间无法访问 header

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:44 25 4
gpt4 key购买 nike

我在 header 中有一个 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
{

}

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

最佳答案

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com