如何通过名称访问根命名空间,而不是简单地“::”? 我正在使用一个C++项目(我是一个完整的C++ N900B),它使用根命名空间访问下面代码行中的:ToWoWe/Cuff>方法,但是我已经更改了一些构建设置,并且正在获得错误。 CCString * CCBReader::toLowerCase(CCString * pString) { std::string copy(pString->getCString()); std::transform(copy.begin(), copy.end(), copy.begin(), ::tolower); return CCString::create(copy.c_str()); }

如何通过名称访问根命名空间,而不是简单地“::”? 我正在使用一个C++项目(我是一个完整的C++ N900B),它使用根命名空间访问下面代码行中的:ToWoWe/Cuff>方法,但是我已经更改了一些构建设置,并且正在获得错误。 CCString * CCBReader::toLowerCase(CCString * pString) { std::string copy(pString->getCString()); std::transform(copy.begin(), copy.end(), copy.begin(), ::tolower); return CCString::create(copy.c_str()); },c++,namespaces,cocos2d-x,C++,Namespaces,Cocos2d X,构建更改对于大多数项目来说都是必不可少的,而更改这些内容并不是一个选项。因此,作为一种解决方法,我想尝试使用根名称空间作为前缀。例如: std::transform(copy.begin(), copy.end(), copy.begin(), rootns::tolower); 这可能吗?如果是,怎么做 由于你们中的许多人已经忽视了我的理想解决方案,认为这是不可能的,并且询问了错误是什么,看看你们是否可以用自己的方式解决它,下面是错误的相关部分: error: '::tolower' has

构建更改对于大多数项目来说都是必不可少的,而更改这些内容并不是一个选项。因此,作为一种解决方法,我想尝试使用根名称空间作为前缀。例如:

std::transform(copy.begin(), copy.end(), copy.begin(), rootns::tolower);
这可能吗?如果是,怎么做

由于你们中的许多人已经忽视了我的理想解决方案,认为这是不可能的,并且询问了错误是什么,看看你们是否可以用自己的方式解决它,下面是错误的相关部分:

error: '::tolower' has not been declared

根命名空间没有名称,因此没有其他方法来寻址它


相反,你将不得不重新检查你的构建改变,并且可能考虑你所得到的错误到底是什么。该错误可能与名称空间无关。它可能是由代码早期的其他问题触发的。

这不能解释更改的内容,也不能解释错误是什么。建议的解决方案无法运行,很可能无法解决任何问题。
是根命名空间,按名称,并且完全限定……您遇到了什么样的错误?是否包含了
?@R.MartinhoFernandes,添加将错误更改为:
/var/folders/l0/kfbjrjn3d16501vbl6ggm280000gn/T//ccdcwH9e.s:2947:错误:偏移量无效,值太大(0x00000400)
和往常一样:
std::tolower
std::transform
和迭代器(其值类型为
char
)一起使用时是未定义的行为。谢谢-这是我一直在寻找的直截了当的答案。