gpt4 book ai didi

c++ - 如何使用命名空间和类?

转载 作者:太空狗 更新时间:2023-10-29 20:53:14 26 4
gpt4 key购买 nike

抱歉,如果这是一个愚蠢的问题,但我正在学习 C++(我通常用 C 编写代码)并且我不明白如何使用 namespace 和类。它们必须在头文件中声明吗?如何在命名空间中声明函数?假设我正在处理一个包含不同文件的大型项目。我在一个文件中定义了一个命名空间,但随后想向同一个命名空间添加更多函数,但这些函数是在另一个文件中定义的。那可以吗?例如:

file1.cpp

namespace Example {
int vartest;
void foo();
}

file2.cpp

int othervar;
void otherfoo(); // How can I add this and othervar to the Example namespace?

谢谢!

最佳答案

只需将其声明为相同“名称” 的等效1 命名空间!

file1.cpp

namespace Example {
int vartest;
void foo();
}

file2.cpp

namespace Example {
int othervar;
void otherfoo();
}

命名空间被合并。

Do they have to be declared in header files?

没有。您可以在 namespace 内声明任何 namespace。 (注意“全局作用域”也是一个命名空间)

How do I declare functions in a namespace?

只需在 namespace 中声明即可。正如您所做的那样。

And let's say I am working on a large project with different files. And I define a namespace in a file, but then want to add more functions to that same namespace, but those functions are defined in another file. Can that be done?

合并同一命名空间内的同名命名空间。

namespace X { void foo(){} }
namespace X { void foo(){} } //Error, redefinition of `foo` because the namespace ::X is merged

namespace X { void foo(){} }
namespace Y { void foo(){} } //Ok. Different name spaces...

namespace X { void foo(){} }  // ::X
namespace Y { void foo(){} } // ::Y

namespace Y {
namespace X { // namespace ::Y::X here isn't same as ::X
void foo(){} //OK
}
}

1 回想一下,所谓的“全局作用域”实际上是一个名为global namespace的命名空间

关于c++ - 如何使用命名空间和类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43440884/

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