在C ++(类)中,是否总是需要在头文件中声明函数?

袁咏仪

例如,我有一个markerdisplay.cpp文件。markerdisplay成员函数将类似于以下代码。

void MarkerDisplay::setMarkerStatus(MarkerID id, StatusLevel level, const std::string& text)
        {
               .....
        }

我可以在markerdisplay.cpp中使用非成员函数吗?

例如,

bool validateFloats(const visualization_msgs::Marker& msg)
        {
              ...
        }

函数validateFloats不是成员函数,并且我也没有在头文件中声明它。我只在validateFloats.cpp文件中使用此函数。

有人告诉我这可能会引起一些问题。真的吗?

眼睛的树

如果您不需要以外的函数.cpp,则只需在该文件中声明和定义它即可。当然,您仍然必须在首次使用它之前声明它,但这是我能想到的唯一“问题”。

这是相当不错的主意来的头部声明功能,如果因为你使用了更少的“项目公开”的名称,并使其更容易找到函数的所有用途,从而使代码更易于维护,不需要。

如果您未在标头中声明该函数,则应使其static

static bool validateFloats(const visualization_msgs::Marker& msg);

或将其放在匿名名称空间中:

namespace {
    bool validateFloats(const visualization_msgs::Marker& msg);
}

(首选)以避免意外的跨翻译单位名称冲突。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C ++,私有函数真的需要在头文件中吗?

在“ C”头文件中声明的静态函数

是否可以在头文件中定义C函数?

是否可以从同一头文件中的头文件调用函数?(C99)

C ++在另一个类头文件中声明一个类

在C ++中的头文件中,单独的.cpp文件中编写的类的成员函数的定义

函数声明文件中需要C标头指令?

C ++头文件中的静态函数

头文件中的C函数实现

使用c头文件时,是否需要将“ struct”放在c ++中的struct实例前面?

C中头文件中带有struct参数的函数声明

为什么CodeBlocks编译器无法识别我在C的头文件中声明的函数?

C ++中嵌套模板类返回类型的头文件中的函数返回类型的语法

C++ 头文件类声明

奇怪的C++头文件函数声明

如何在头文件中声明C数组?

为 C++ 头文件中的类属性声明而苦恼?

头文件C ++中的声明和初始化太多

在C头文件中声明结构-gcc malloc错误

在C中是否需要变量声明?

在头文件中定义C ++函数是否是一种好习惯?

C语言编程。如果需要在头文件(.h)中引用其实例,如何在.c中隐藏该结构的实现

RVO是否需要在C ++ 11中启动移动构造函数/赋值?

是否需要在C ++析构函数中明确销毁结构中固定大小的数组?

C ++使用cpp中的头文件中的引用函数?

在C ++中的类的函数内部声明变量

在C ++中是否有“静态类”,就像要在同一文件中访问的静态函数一样?

在C ++中包括头文件(类定义和方法实现)

在 C++ 公共头文件中包含嵌套类