草庐IT

virtual-attribute

全部标签

c++ - extern "C"变量名 "virtual"

我正在尝试创建一个基于Qt5.1配置KMS功能测试(qtbase/config.tests/qpa/kms)的简单C++测试应用程序,但它失败了。该应用程序非常简单,如下所示:#includeextern"C"{#include#include#include"xf86drm.h"}#include#includeintmain(int,char**){//Checkforgbm_surfacewhichisquitearecentaddition.gbm_surface*surface=0;return0;}问题是当包含“libdrm/xf86drmMode.h”或“libdrm/x

c++ - 我想我已经重写了一个虚拟方法,但我仍然得到 : "X must implement the inherited pure virtual method Y"

我正在尝试用C++为我正在编写的游戏实现一个接口(interface),但我运行时出错。这是我创建的接口(interface)及其子类://Attack.h//definesasetofvaluesassociatedwithallattacks//andaninterfaceforallattackstypedefunsignedconstintattack_type;typedefunsignedconstintp_attack_type;//definestheattacktypesstaticconstattack_typeNORMAL=0;staticconstattack_

C++ 继承 : Calling virtual method when it has been overridden

我正在尝试构建一个可以在单独的线程中运行(即执行它的run()函数)的service对象。这是服务对象#include#include#include#includeclassservice:publicboost::noncopyable{public:service():stop_(false),started_(false){}virtual~service(){stop();if(thread_.joinable()){thread_.join();}}virtualvoidstop(){stop_=true;}virtualvoidstart(){if(started_.lo

c++ - 当 "virtual"位于 "class Foo : public virtual Bar"而不是 "virtual void frob()"时,这意味着什么?

我在成员函数的上下文中理解virtual,例如virtualvoidfrob()。但它在类声明的上下文中意味着什么,例如classFoo:publicvirtualBar?对于给定的方法,有8种情况源于以下三个位置是否存在virtual:1)父类(superclass)的函数;2)这个类的继承链;3)该类的功能。我想我理解1)和3)是如何相互作用的,但是2)似乎是多余的。是吗?我有什么不明白的? 最佳答案 那是virtualinheritance,当你知道你将进行多重继承时,你就会这样做。该页面有更多详细信息。

c++ - 将私有(private)部分保留在 c++ header 之外 : pure virtual base class vs pimpl

我最近从Java和Ruby切换回C++,令我惊讶的是,当我更改私有(private)方法的方法签名时,我不得不重新编译使用公共(public)接口(interface)的文件,因为私有(private)部分也在.h中文件。我很快想出了一个解决方案,我想这对Java程序员来说是典型的:接口(interface)(=纯虚拟基类)。例如:香蕉树.h:classBanana;classBananaTree{public:virtualBanana*getBanana(std::stringconst&name)=0;staticBananaTree*create(std::stringcons

c++ - 提神气 : Take a rule's attribute and set it as a field of an enclosing rule's struct attribute?

像许多其他问题一样,我正在尝试使用Boost.Spirit.Qi将简单语法解析为结构树。我会尽量提炼我正在尝试做的事情,以尽可能最简单的情况。我有:structInteger{intvalue;};BOOST_FUSION_ADAPT_STRUCT(Integer,(int,value))稍后,在语法结构中,我有以下成员变量:qi::ruleinteger;我用它来定义integer=qi::int_;但是,当我尝试实际解析一个整数时,使用qi::phrase_parse(iter,end,g,space,myInteger);myInteger.value在成功解析后始终未初始化。同

C++ virtual = 0; 之间的区别和空函数

我现在正在学习C++,OO方面,我一直看到这个:classSomeClass{virtualvoidaMethod()=0;}classAnotherClass{voidanotherMethod(){/*Empty*/}}classSomeClassSon:publicSomeClass{voidaMethod(){/*AlsoEmpty*/}}这3种方法有什么区别?虚等于零,空一,虚,既然继承,空一。为什么我不能让SomeClassSon方法像父亲一样,virtualvoid等于零? 最佳答案 为了你的classSomeClas

c++ - 是什么阻止了 __attribute__((packed)) 进入 ISO C/C++?

这是我在编写某些类的系统软件时使用C/C++的最重要原因之一,但它只不过是一个编译器扩展,恰好很常见。为什么委员会不考虑正式支持它?它是否与现有规范中的任何条款不兼容,例如Doespublicandprivatehaveanyinfluenceonthememorylayoutofanobject? 最佳答案 Whyisn'tthecommitteeconsideringtosupportitofficially?因为没有人提出。最接近这种提议的是N3986(PDF),它只适用于位域。commentsfromthediscussio

c++ - 警告 : overloaded virtual function "Base::process" is only partially overridden in class "derived"

我低于警告。我的部分代码是:classBase{public:virtualvoidprocess(intx){;};virtualvoidprocess(inta,floatb){;};protected:intpd;floatpb;};classderived:publicBase{public:voidprocess(inta,floatb);}voidderived::process(inta,floatb){pd=a;pb=b;....}我低于警告:Warning:overloadedvirtualfunction"Base::process"isonlypartiallyo

C++: "Virtual"是否继承给所有后代

假设以下简单情况(注意virtual的位置)classA{virtualvoidfunc();};classB:publicA{voidfunc();};classC:publicB{voidfunc();};下面的调用会调用B::func()还是C::func()?B*ptr_b=newC();ptr_b->func(); 最佳答案 您的代码是无效的C++。类定义中的括号是什么?这取决于pointer_to_b_type指向的对象的动态类型。如果我理解您真正想问的问题,那么"is"。这调用C::func:Cc;B*p=&c;p->