gpt4 book ai didi

.cc 文件中包含 C++ 命名空间

转载 作者:搜寻专家 更新时间:2023-10-31 01:21:36 25 4
gpt4 key购买 nike

我在 X.h 中声明了一个类 X,如下所示:

namespace Foo {
class X{
....
};

}

在 X.cc 中,我想为 X 定义构造函数和方法。

我是否需要将所有定义包含在 namespace Foo {...} 中或者为每个方法将 X 作为 Foo::X::的前缀?

似乎有时我可以只说(使用命名空间 Foo)而不再提及它,即只需将方法定义为X::X() {...}

这里正确的做法是什么?

最佳答案

您建议的三种方法中的任何一种都可以。鉴于:

namespace N {
struct S {
int F();
};
}

您可以将定义放在命名空间 block 中:

namespace N {
int S::f() { return 42; }
}

您可以使用命名空间名称限定成员名称:

int N::S::f() { return 42; }

或者您可以使用 using 指令(不过我不推荐这样做):

using namespace N;
int S::f() { return 42; }

一般来说,我建议不要使用 using 指令。至于其他两个(使用命名空间 block 或限定名称),我认为这并不重要。我在我的代码中都做了。

关于.cc 文件中包含 C++ 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3668963/

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