gpt4 book ai didi

c++ - 使用 "using"指令缩短函数定义

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:49:03 27 4
gpt4 key购买 nike

我偶然发现 using namespace 指令的用法对我来说很不寻常:

给定一个头文件WeirdNamespace.h:

namespace WeirdNamespace
{

class WeirdClass
{
public:
int x;

void go();
};

}

我有一个匹配的“WeirdNamespace.cpp”:

#include "WeirdNamespace.h"

#include <iostream>

using namespace WeirdNamespace;

void WeirdClass::go()
{
std::cout << "Reached go?!" << std::endl;
}

类的使用如下:

#include "WeirdNamespace.h"

int main(int argc, const char * argv[])
{
WeirdNamespace::WeirdClass c;
c.go();
}

到现在为止,我从未见过用于避免在 cpp 文件中重新打开命名空间或在方法名称前加上命名空间名称的 using 指令。它是指令的正确用法吗?除了通常的 using namespace 警告之外,是否有任何特定于此场景的陷阱?

最佳答案

你可能会这样做:

namespace WN = WeirdNamespace;
WN::WeirdClass c;

现在,我得到了问题!以上是没有答案

引用自[7.3.4] Using指令

"During unqualified name lookup (3.4.1), the names appear as if they were declared in the nearest enclosing namespace which contains both the using-directive and the nominated namespace."

因此,您在源代码中定义而不将其包含在命名空间中是可以的。

关于c++ - 使用 "using"指令缩短函数定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18556714/

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