gpt4 book ai didi

vector - 不允许使用 C++ 命名空间类型名称

转载 作者:行者123 更新时间:2023-12-04 16:54:53 25 4
gpt4 key购买 nike

我有 C++ 命名空间的问题

我想为某个框架的迭代器提供一个向量快捷方式。
这完全正常。

using namespace std;
using namespace GS;

typedef vector<vector<String> >::const_iterator table_iter;

但是,这会产生“错误:现在允许类型名称”。
//using namespace std;
using namespace GS;

typedef vector<vector<String> >::const_iterator table_iter;
String实际上是 GS::String我不想使用 using namespace xxx在我的头文件中。所以我认为这应该有效
//using namespace std;
//using namespace GS;

typedef vector<vector<GS::String> >::const_iterator table_iter;

这也会产生“错误:现在允许类型名称。”

显然,我可以做到
using namespace std;
//using namespace GS;

typedef vector<vector<GS::String> >::const_iterator table_iter;

但是为什么我需要 std ?我认为命名空间 GS有一些关于使用 std 的宏。

有没有办法做这样的事情?
typedef vector<vector<GS(YeahImUsingStd)::String> >::const_iterator table_iter;

提前致谢!

编辑:我无法编辑 GS 命名空间!

最佳答案

vector位于命名空间 std ,所以你需要前缀 std::前:

using namespace GS;
typedef std::vector<std::vector<String> >::const_iterator table_iter;

或者,避免使用命名空间 GS也:
typedef std::vector<std::vector<GS::String> >::const_iterator table_iter;

但是,因为您只需要 vector从标准库中,您也可以这样做:
using std::vector;
using namespace GS;
typedef vector<vector<String> >::const_iterator table_iter;

这样你就告诉编译器你想使用 vector来自 std::命名空间,但不带所有命名空间。

但是你说你要避免 using namespace在你的头文件中。这通常是个好主意(包括 using std::vector ),所以最好的解决方案是第二个:
typedef std::vector<std::vector<GS::String> >::const_iterator table_iter;

关于vector - 不允许使用 C++ 命名空间类型名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23340955/

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