我仍然是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 ++)
答案 0 :(得分:2)
这很好
<h1>Number {{$ctrl.number}}</h1>
Plural Component <ng-pluralize
count="$ctrl.number"
when-0="00"
when-one="11"
when-few="22"
when-many="33"
when-other="44">
</ng-pluralize>
根本不需要function.h。如果要将命名空间拆分为多个文件,可以这样做:
//objectname.h
namespace ObjectName
{
Object Function(arguments);
}
换句话说,您需要再次将声明包装在命名空间中。 (这是一个提前的话题。我不会这样做。)
Function.cpp只需说它定义的函数:
//function.h
//includes declarations used in the function definition as well
//as possibly a redundant function declaration.
namespace ObjectName
{
Object Function(arguments);
}
请注意,使用标头文件的语句为//function.cpp
#include "ObjectName.h"
Object ObjectName::Function(arguments)
{
....
}
,而非#include
答案 1 :(得分:0)
它不是如何工作的:你的function.h在全局命名空间中定义另一个 Function
。拥有两个具有相同名称的函数正是命名空间的用途 - 如果任何其他库中已经存在Function
,则库编写并不需要担心。
由于你的.cpp只定义了两个namespace std
中的一个,另一个未定义,并在调用时会出现链接错误。
请注意,您无需定义&#34;一次命名空间。以<vector>
为例,其内容可在例如{1}中找到。 <list>
,<iostream>
和namespace N { int x; } namespace N { int y; }
。这是可能的,因为与类不同,可以重新打开命名空间。 $results = []; //$result = array() if using below php 5.4
foreach ($comments as $comment) {
$results[$comment->comment_article_id][] = $comment;
}
ksort($result); //to sort from lowest highest article id
有效。