草庐IT

派生词

全部标签

c++ - 派生类模板看不到基类的成员

这个问题在这里已经有了答案:Initializeparent'sprotectedmemberswithinitializationlist(C++)(5个答案)关闭9年前。我正在开发一个派生自另一个的类,但我被这段代码卡住了:templateclassBaseClass{public:BaseClass(){}virtualvoidamethod(A*aPtr=0){mAPtr=aPtr;}virtualvoidinit()=0;protected:A*mAPtr;B*mBPtr;C*mCPtr;};templateclassChildClass:publicBaseClass{pu

c++ - 从 streambuf 派生而不重写相应的流

几天前,我决定编写一个使用mmap和预读的streambuf子类会很有趣。我查看了我的STL(SGI)如何实现filebuf并意识到basic_filebuf包含一个FILE*。所以从basic_filebuf继承是不可能的。所以我继承自basic_streambuf。然后我想将我的mmapbuf绑定(bind)到一个fstream。我认为我唯一要做的就是复制filebuf的隐式接口(interface)...但这是一个明显的错误。在SGI中,basic_fstream拥有一个basic_filebuf。无论我是否调用basic_filestream.std:::::ios::rdbu

c++ - 如何确定虚基类和派生类的大小呢?

#includeusingnamespacestd;classbase1{};classbase2{virtualvoidshow(){}};classtest1{};classtest2{virtualvoidshow(){}};classderv1:publicvirtualbase1{};classderv12:publicvirtualbase2{};classderv2:publicvirtualbase2,publictest1{};classderv22:publicvirtualbase2,publicvirtualtest1{};classderv222:public

c++ - 无法从派生指针访问公共(public)基成员

为什么这段代码不能编译?(海合会4.7.0)//Classwithasimplegetter/setterpair.classBase{public:Base():m_Value(0){}virtual~Base(){}//Gettervirtualintvalue(){returnm_Value;}//Settervirtualvoidvalue(intVal){m_Value=Val;}private:intm_Value;};//Derivedclassoverridesthesetter.classDerived:publicBase{public:voidvalue(intV

c++ - 在没有模板参数的派生类中使用模板类名是否合法?

以下代码在clang++8.0.0下都可以正常编译和g++9.1.0(编译标志是-Wall-Wextra-Werror-pedantic-errors):templatestructBase{};structDerived:Base{Basebase(){returnBase();}};intmain(){}这是这些编译器中的错误还是C++标准的特性? 最佳答案 与injected-class-name内部Base,Base指(在某些情况下)Base.Derived然后也会使用那个注入(inject)的类名。

c++ - 计算单个派生类的实例

我希望能够对属于同一类层次结构的类的实例进行计数。例如,假设我有这个:classA;classB:publicA;classC:publicB;然后我有这段代码A*tempA=newA;B*tempB=newB;C*tempC=newC;C*tempC2=newC;printf(tempA->GetInstancesCount());printf(tempB->GetInstancesCount());printf(tempC->GetInstancesCount());打印结果112理想情况下,计数应该在内部完成。每个类,而不是某种管理器,都应该知道它有多少个实例。有什么想法吗?谢谢

c++ - 强制派生类使用基类的构造函数

有没有办法强制派生类使用抽象基类的构造函数?它一定不是真正的构造函数,我对创造性解决方案持开放态度。classAbstract{private:intMember;stringText;public:Abstract(intMember,stringText){this->Member=Member;this->Text=Text;}//e.g.definingvirtualfunctions}例如我的抽象类有一些私有(private)成员,每个派生类也应该有。而且它们应该在构造函数中定义,即使违背派生类的意愿也是如此。我知道构造函数不是继承的。但是是否有产生类似行为的解决方法?

c++ - 从派生类中的模板化基类使用 typedef/using

在访问using从具有模板化基类的基类开始,如果没有别的,我遇到了冗长的问题。在下面的代码中,派生类尝试使用my_type来自其基类。templateclassBase{public:usingmytype=T;};templateclassDerived:publicBase{public://usingthebase'smytypeherestatictypenameBase::mytypefunc(){return0;}};然而,在实践中,我发现这是一个非常多的字符,因为它看起来应该更简单。如果Base类没有被模板化,那么它就不需要或类型名称(显然)。在我的实际问题中,我有大量从

c++ - 从派生类访问基类公共(public)成员

是否可以从程序中其他一些位置的派生类实例访问基类公共(public)成员。classbase{public:intx;base(intxx){x=xx;}};classderived:base{public:derived(intxx):base(xx){}};classmain{public:derived*myDerived;voidm1(){myDerived=newderived(5);m2(myDerived);}voidm2(derived*myDerived){printf("%i",myDerived->x);}};在上面的代码之后,我得到了以下错误。`error:'i

c++ - 无法使用基类指针调用派生类函数

我想使用基类指针调用未在基类中定义的派生类函数。但这总是会引发错误:errorC2039:‘derivedFunctionName’:isnotamemberof‘BaseClass’你知道我该如何解决这个问题吗?谢谢, 最佳答案 您不能通过指向基类的指针调用只出现在派生类中的成员;您必须首先将它(可能使用dynamic_cast)转换为指向派生类型的指针——否则编译器根本不知道该方法是否存在。它可能看起来像这样:voidsomeMethod(Base*bp){Derived*dp=dynamic_cast(bp);if(dp!=n