草庐IT

Wmissing-prototypes

全部标签

c++ - 有没有一种好方法可以避免 C++ 中方法原型(prototype)的重复?

在我阅读的代码中,大多数C++类方法签名在头文件中的声明和源文件中的定义之间是重复的。我发现这种重复是不可取的,并且以这种方式编写的代码的引用位置很差。例如,源文件中的方法经常引用头文件中声明的实例变量;您最终不得不在阅读代码时不断地在头文件和源文件之间切换。有人会推荐一种避免这样做的方法吗?或者,我主要是要通过不以通常的方式做事来混淆有经验的C++程序员吗?另见Question538255C++codeinheaderfiles有人被告知一切都应该放在标题中。 最佳答案 还有一个替代方案,但治疗比疾病更糟糕—在header中定义所

c++ - 函数原型(prototype)中的 "..."

我看到某人的C++代码有如下函数声明:voidinformation_log(constchar*fmt,...)或者像这样捕获blockcatch(...){}“...”是什么意思? 最佳答案 函数原型(prototype)中的省略号...用于表示函数是可变的。也就是说,它允许将可变数量的参数传递给函数。在这种形式下,函数必须为用户定义某种方式来准确指定它们提供了多少个参数,因为C++中的可变参数库函数无法动态确定此信息。例如,stdio函数printf就是这样一个函数,其原型(prototype)是:intprintf(cons

c++ - GoF对Prototype模式的实现

(这个问题更多的是给接触过这本书的人,否则很难把它放在上下文中)我一直在阅读GoF的“设计模式”一书,在“CreationalPatterns->Prototype->Samplecode”下有一句话让我有点困惑em>(第124页)。在页面底部附近,有BombedWall的实现。,据我所知,这是一个具体的原型(prototype),因为它继承自Wall,并重新定义Clone()虚函数。BombedWall还定义了另一个方法,HasBomb(),任何使用常规Wall的客户都不知道界面。BombedWall的唯一途径存储在MazePrototypeFactory(原型(prototype)

c++ - 一个类继承自两个类,具有相同的函数原型(prototype),相互冲突

我正在处理光线追踪任务,这是有问题的来源:classGeometry{public:virtualRayTask*intersectionTest(constRay&ray)=0;};classSphere:publicGeometry{public:RayTask*intersectionTest(constRay&ray);};classBoundingVolume{public:virtualboolintersectionTest(constRay&ray)=0;};classBoundingSphere:publicSphere,BoundingVolume{public:b

c++ - 为什么这个参数顺序在 regex_match 的原型(prototype)中?

这里是6prototypes的简化版std::tr1::regex_match的regex_match(iterator1,iterator2,match_results&,regex&,flags=some_default);regex_match(iterator1,iterator2,regex&,flags=some_default);regex_match(Elem*,match_results&,regex&,flags=some_default);regex_match(Elem*,regex&,flags=some_default);regex_match(string

c++ - 将 C++ 方法绑定(bind)到现有 JS 函数原型(prototype)的最简单方法?

我有几个简单的C++类,例如:classAudio{public:Audio(constchar*filename,boolasync=true);~Audio();Audio*play(intfade=0);Audio*pause();Audio*loop(intloops=-1);Audio*volume(floatvolume);我已经在J​​avaScript中复制了如下结构:varAudio=function(filename,async){};Audio.prototype.Play=function(fade){};Audio.prototype.Pause=functi

c++ - 原型(prototype)模式

根据维基百科原型(prototype)模式是:原型(prototype)模式是一种在软件开发中使用的创建型设计模式,当要创建的对象类型由原型(prototype)实例确定时,原型(prototype)实例被克隆以产生新对象。此模式用于:避免在客户端应用程序中使用对象创建者的子类,就像抽象工厂模式那样。避免以标准方式(例如,使用new关键字)创建新对象的固有成本,因为对于给定的应用程序来说成本过高。我在C++中看到了这种模式的某些演示代码,它们都使用了复制构造函数。任何人都可以解释第二点如何应用(在一般情况下以及在C++的上下文中),因为我们无论如何都在克隆函数中使用复制构造函数。如果可

c++ - 使用模板化类型的模板中的函数原型(prototype)

我想了解为什么会失败:templateTapply(Ustuff,std::functionfunction){returnfunction(stuff);}(这当然不是真正的代码)。在g++-4.8上,我得到“模板参数1无效”。谢谢!编辑:详尽的例子:基本上,我想做的是为MapFunction执行一个特定的原型(prototype)。和ReductionFunction类型。我想:MapFunction:typeof(*InputIterator)->T归约函数:(T,T)->T代码:templateTmapReduce_n(InputIteratorin,unsignedintsi

c++ - 船长原型(prototype) : Piecewise write large message to disk

我想创建一个巨大的打包数据阵列,并将其保存在磁盘上。我正在使用writePackedMessageToFd()。但是,由于输入数据非常大(50GB),我需要将消息片段写入磁盘以释放内存。Cap'nProto的当前版本是否可行?旁注:这个问题与提到的重复问题不同,因为输出不需要流式传输,例如理论上可能还有其他选项,例如在第一遍中保存整个(未完成的)消息的不断增长的文件。第二遍可以完成消息。 最佳答案 您所描述的可能行不通。从磁盘读取打包消息时,您必须预先读取并解压整个消息,这将需要足够的物理RAM来容纳整个解压消息。你有两个选择:将消

c++ - 为什么在 C++11 中会多次提及 "function prototypes"?当然这些在 C++ 中不存在

C++11标准多次提及“函数原型(prototype)”。没有任何相关特征的定义,但在随机的地方,如:[C++11:3.3.4]中的“函数原型(prototype)范围”(其定义实际上承认它在谈论“函数声明”);[C++11:17.5.1.4/1]中库类型定义子句的编辑描述,脚注175(这似乎指的是C功能);[C++11:20.9.4.3/6]它描述了假设的templatetypenameadd_rvalue_reference::typecreate();作为“函数原型(prototype)”。在[C++11:20.9.6/4]同样的事情;附录[C++11:C.1.7]其中谈到了C中