草庐IT

msf会话派生cs

全部标签

c++ - 在扩展派生自的模板之前访问模板的基类

我正在尝试从模板中公开派生一个类,这将使它从基类继承并获得对protected成员的访问权限。但是在模板展开之前它没有这些权限,所以它不能使用Base成员作为模板参数:usingFun=void(*)();classBase{protected://friendclassDerived;//...needthistoeliminatecomplaintstaticvoidsomething();};templateclassVariant:publicBase{};classDerived:publicVariant{//`something()`isprotectedpublic:v

c++ - 如何在所有派生类中调用重写的方法

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Howtoforcechildsamevirtualfunctioncallitsparentvirtualfunctionfirst我有一个类层次结构,其中每个派生类都会覆盖一个给定的虚函数,并通过调用其父类中的虚函数来启动其实现。目标是让每个派生的实现都得到执行,但我不喜欢我这样做的方式。比如我有这个类:classbase{public:voiddo_stuff(){do_something();}virtualvoiddo_something(){}};然后我在几个层次上派生这个类:classderiv

c++ - C++中不同派生类的高效容器

在编写游戏程序时,我曾经将所有游戏对象存储在一个具有初始化和固定大小的std::vector中。最近我觉得需要在游戏对象类之间进行一些继承。让我们假设我有大约40个派生self的Enemy类的类。如果我想将这些类的对象/实例存储在vector中,我只能选择将它们存储为vectorEnemy*对吗?所以唯一连续分配的是指针,对吧?所以当需要取消引用时,我仍然会有很多缓存未命中,对吧?是否有任何“最佳实践”方式将派生类存储在连续分配的内存中,以便循环遍历它们花费最少的时间? 最佳答案 Boost刚刚为此目的接受了一个库:poly_col

c++ - 基类和派生类中的模板成员之间的重载解析

Microsoft编译器(VisualStudio201715.2)拒绝以下代码:#includestructB{template=0>voidf(){}};structD:B{usingB::f;template=0>voidf(){}};intmain(){Dd;d.f();d.f();}错误是:errorC2672:'D::f':nomatchingoverloadedfunctionfounderrorC2783:'voidD::f(void)':couldnotdeducetemplateargumentfor'__formal'note:seedeclarationof'D

c++ - 是否有可能有一个继承最终函数但创建相同函数(而不是重写)的派生类?

final函数有问题。我想“停止”类中的多态性,但我仍想在派生类中生成相同的函数。像这样:classBase{protected:int_x,_y;public:Base(intx=0,inty=0):_x(x),_y(y){};intx()const{return_x;}inty()const{return_y;}virtualvoidprint()const{cout 最佳答案 我认为这是一个实验性问题,因为实际上当您需要“覆盖最终函数”时您应该重新考虑您在做什么(听起来很矛盾,不是吗?)。但是您可以引入一个“虚拟”参数,即vo

c++ - 使用基类实例创建派生类实例

我有一个基类实例,有一个继承自基类的派生类,我想将基类实例转换为派生实例,(如果可能的话不复制任何东西(可能向派生类发送一个基类))我该如何实现?注意:我需要这个,因为我使用的是工厂设计模式,它标识需要使用位于基实例中的参数创建的派生类。//classA//classB:publicA(purevirtual)//classC:publicBBBFactory::makeB(A&a){intn=a.getN();if(n==1){returnnewC();}}谢谢。 最佳答案 考虑汽车的情况。您可以将兰博基尼视为汽车。您可以将Yug

c++ - 使用宏创建 QObject 派生类

我正在尝试简化(即摆脱大量样板代码)QObject包装类的创建,这些包装类转发其他QObject派生类的属性访问。从小处着手,我只是尝试使用一个属性://Sy_test.h-ThewrappedclassclassSy_test:publicQObject{Q_OBJECTQ_PROPERTY(boolpropREADgetPropWRITEsetPropNOTIFYpropChanged)public:Sy_test(QObject*parent=nullptr):QObject{parent},prop_{false}{}boolgetProp()const{returnprop_

c++ - Boost模板派生类的序列化

我有一个模板化基类Base和一个模板化派生类Derived,我想将其序列化。下面的简化代码编译并运行但不序列化基类的数据成员。#include#include#include#include#include#include#include#include#includetemplatestructBase{Base(Uuu,Vvv):u(uu),v(vv){}Uu;Vv;};templatestructDerived:publicBase,publicBase{Derived(Ttt):Base(2.0,4),Base(3.0,std::string("hello")),t(tt){}

c++ - 从基类的指针访问派生类的成员

我有一个从另一个派生的类,我使用一个基类指针数组来保存派生类的实例,但是因为数组是基类的,所以我无法使用指针访问属于派生类的成员符号,我是否可以使用简单的命令访问这些成员,或者我是否应该重写我的基类以定义成员并仅在派生类中使用它?例子:classA{public:intfoo;};classB:publicA{public:charbar;};classC:publicA{inttea;};intmain(){A*arr[5];arr[0]=newB;chartest=arr[0]->bar;//visualstudiohighlightsthiswithanerror"classAh

c++ - 为什么派生类不能通过指向基类的指针访问其基类的 protected 成员?

这是code:classTestA{protected:inttest=12;public:TestA(){couttest;}~TestB(){}};intmain(){TestA*pTestA=newTestA();TestB*pTestB=newTestB(pTestA);}我正在尝试使用指向TestA类型对象的指针访问protected成员(因此,TestA的实例).TestB也派生自TestA为什么我无法访问它?它只能在我需要它的类(class)“内部”访问吗?不在外部使用指针/直接声明? 最佳答案 当public继承自基