繁体   English   中英

C ++类成员函数命名规则

C++ class member function naming rules

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试将C套接字库中的一些函数封装到我自己的C ++类中。 我想定义一个成员函数,它使用与其相应的C函数相同的名称,但具有不同的签名。 例如,我想写这个函数

ssize_t MyClass::write(const void *buf);

打电话给

ssize_t write(int fd, const void *buf, size_t count);

当我编译时,我得到以下错误

error: no matching function for call to ‘MyClass::write(int&, const char*&, size_t)’
note: candidates are: ssize_t MyClass::write(const char*)

我有正确的#include语句来调用C套接字库,但是我对write函数的定义似乎正在影响它。 如果我将我的类定义函数的名称更改为其他内容,那么一切似乎都能正常工作。

我有理由相信,更改我的函数名称将成为我的最终解决方案,但有人可以告诉我导致此行为的C ++命名规则的名称吗? 我想阅读它,所以我知道我将来在做什么。

3 个回复

您是否尝试过调用C函数来解释它是否存在于全局命名空间中,例如:: write?

这个页面在描述C ++中的名称查找规则方面做得非常好。 基本上,一旦编译器发现write()是类成员函数,它就不会查找同名的全局函数。 然后报告错误,因为成员函数write()没有正确的数量和类型的参数。 使用一元范围解析运算符::强制编译器仅搜索名为write()函数的全局命名空间,然后成功。

更一般地说,当编译器寻找函数时,它首先查找最近的命名空间,如果找到具有正确名称的命名空间,即使签名不匹配,它也不会再查看。

1 定义未命名的类成员函数?

我目前在 Foo.h 中定义了两个未命名的类: 这段代码编译得很好,它是这样使用的: 但是,现在我想将成员函数定义移动到源文件中。我知道将此类拆分为头文件和源文件的唯一方法是命名这些类: 福.h: 文件.cpp: 然而,这段代码不是我想要的,因为它很丑,而且我一开始并不想要一个命名 ...

2 将类成员函数绑定到c函数

下面我有一个将类成员函数绑定到全局函数的概念。 这样做的主要目的是使用C ++进行C风格的回调函数实现。 这可以以更好的方式来完成(例如,并非最终宏或typeof ,或使用C ++ 0x特性的)? ...

3 c ++类成员函数

使用以下代码,在类中声明成员函数,它会提示用户输入各种输入,如小时和付费。 准确地将信息放入p1和p2因为我可以用cout确认。 但是, p2.combineinfo(p1)再次提示输入一组信息。 我不想要这个,我只需要传递给这个函数来组合然后用printinfo();打印出来pri ...

2013-03-13 03:46:02 4 310   c++
5 C++类继承和成员函数

所有,我很难理解为什么我会收到以下错误。 我保证这不是作业问题,但我是 C++ 新手! 这是我的代码: 我得到的编译器错误如下: 我不明白为什么成员函数 get_label() 没有从 Base 类继承到 Derived 类,以至于我无法通过 VecDerived 类访问它。 有没有办法解决 ...

6 其他类的C ++成员函数指针

我正在用C ++创建一个控制台菜单,我想给菜单中的每个项目一个回调函数,因此当选择一个项目时,将调用另一个函数。 到目前为止,我有以下代码: 这给了我这个错误: 在addOption(core.action1); 并且 当我尝试调用该函数时。 我已经看到了成 ...

7 对命名空间C ++中类的静态成员函数的未定义引用

我创建了一个C ++类来提供操作互斥量的方法,并且该类应该在Windows以及基于Linux的系统上都可以工作。 当我在不将类包含在命名空间中的情况下编译此代码时,它将编译并运行。 但是,当我将其包含在命名空间中时,所有静态方法都会出现编译时错误,下面是一个示例。 未定义引用`mu ...

9 类成员函数

假设我有一些类,其成员函数不经常使用,但其定义非常冗长 在may程序中的某个时刻我想创建数百万个类foo的实例,并且我希望这在内存中占用尽可能少的空间。 冗长的函数是否也以某种方式复制了一百万次? 在这种情况下,最好定义一个外部函数,我将一个实例作为输入。 如果没有复制数百万次,我 ...

10 成员函数指针的奇怪C ++规则? [重复]

可能重复: 带括号的成员函数的地址出错 在最近的这个问题中 ,OP遇到了C ++语言的一个奇怪的规定,如果该成员函数名称被括起来,则取得成员函数的地址是非法的。 例如,此代码是非法的: 我查了一下,发现这是由于C ++ ISO规范的§5.3.1/ 3所致 仅当 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM