c++ - 有没有办法在单独的 .h 和 .cpp 文件中定义在命名空间中声明的函数?

标签 c++ namespaces

我对 c++ 的许多领域还是有点陌生​​,其中之一是一般的 .cpp 和 .h 文件组织。

我正在创建一个包含一些结构和函数的命名空间。我想在类似于此的 .h 文件中声明命名空间

//objectname.h
namespace ObjectName
{
   Object Function(arguments);
}

function.h 中的声明

//function.h
//includes declarations used in the function definition as well
//as possibly a redundant function declaration.
Object Function(arguments);

然后是function.cpp中的定义

//function.cpp
#include "Function.h"
Object Function(arguments)
{
  ....
}

因此您可以抽象地看到 objectname.h 中的命名空间,function.h 中的函数特定声明和 function.cpp 中的函数定义。 一如既往,非常感谢任何建议。 (也是基于 Windows 的 C++)

最佳答案

这很好

//objectname.h
namespace ObjectName
{
   Object Function(arguments);
}

您根本不需要 function.h。如果你想将命名空间拆分成几个文件,你可以这样做:

//function.h
//includes declarations used in the function definition as well
//as possibly a redundant function declaration.
namespace ObjectName
{
   Object Function(arguments);
}

换句话说,您需要再次将声明包装在命名空间中。 (这是一个进阶话题,我不会做。)

Function.cpp 只需要说它定义的函数:

//function.cpp
#include "ObjectName.h"
Object ObjectName::Function(arguments)
{
  ....
}

注意使用头文件的语句是#include,不是using

关于c++ - 有没有办法在单独的 .h 和 .cpp 文件中定义在命名空间中声明的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36006468/

相关文章:

python - 我可以使用(误用)globals() 命名空间来进行持久存储吗?

namespaces - kubernetes 中不同命名空间的不同入口

c++ - glibc malloc() 总字节数

c++ - 设计问题 : Enum or functions or something else

c++ - 为什么我必须在链接器行的末尾传递库?

C++ : out-of-line declaration of a member must be a definition error for pure virtual function

c++ - 无法在QT中设置几何

php - 在 PHP 中使用命名空间解析 XML 数据

xml - "Template rules match elements in no namespace"消息

asp.net - Linq-to-SQL 数据上下文未生成对象