草庐IT

c++ - 基类所有方法的 undefined reference 错误

我有以下基类和派生类结构。基础/包含/基础.hnamespaceA{namespaceB{classBase{public:Base();Base(constTypetype,constNamename);virtual~Base();//CopyconstructorBase(constBase&other);//AssignmentoperatorBase&operator=(constBase&rhs);//Comparisonbooloperator基础/src/基础.cpp#include"Base.h"//andotherrequiredincludesnamespaceA

c++ - 派生模板类访问基类成员数据

这个问题是对thisthread中提出的问题的进一步插入.使用以下类定义:templateclassFoo{public:Foo(constfoo_arg_tfoo_arg):_foo_arg(foo_arg){/*dosomethingforfoo*/}TFoo_T;//eitheraTypeAoraTypeB-TBDfoo_arg_t_foo_arg;};templateclassBar:publicFoo{public:Bar(constfoo_arg_tbar_arg,consta_arg_ta_arg):Foo(bar_arg)//base-classinitializer{

c++ - 为什么在构造期间在基类中调用重写的虚函数?

这个问题在这里已经有了答案:C++virtualfunctionfromconstructor[duplicate](7个答案)关闭7年前。有一个c++程序:#includeusingnamespacestd;classbase{public:base(){cout它输出:basebasefderivederivef我想知道为什么会出现f基数?我在base中询问构造函数扩展为:cout但这应该指向派生,那么为什么打印出基数f呢?

c++ - 避免将转换运算符中的拷贝复制到基类的子集

首先:你会大喊“XYproblem!”你会是对的,但现在我想看看是否有一个很好的解决方案来解决这个特定的Y来判断/最小化它与这个(大)X的其他Y相比的妥协。考虑以下可变参数模板类,它继承自所有模板参数并为其中的一个子集提供转换运算符:templatestructderived:Ts...{templateoperatorconstderived(){return{static_cast(*this)...};}};这允许你做这样的事情:structA{inta;};structB{doubleb;};structC{std::unique_ptrc;};usingABC=derived

c++ - 如何为任意(但在编译时定义)功能支持定义抽象基类?

我有以下C++设计问题,非常感谢任何建议/解决方案。请注意,我的背景不是计算机科学,因此我可能缺少一些明显的解决方案。我通常在代码中分离关键组件的方式是通过抽象类和纯虚函数定义接口(interface)。范例1:classB{public:virtualdoublef(doublex)=0;};classD1:publicB{public:doublef(doublex)const{return0.0;}};classD2:publicB{public:doublef(doublex)const{return1.0;}};这样我就可以很好地将接口(interface)与实现分开。这种方

c++ - 如何调用在基类中实现纯虚方法的派生类中的模板化方法?

我有一个带有几个纯虚方法的基类,例如classGenericFunction{public:GenericFunction(){/*Initgenericfunctionstate*/};virtualvoidIterate(short*ps,unsignedcs)=0;virtualvoidIterate(float*ps,unsignedcs)=0;}然后我有一堆实现特定功能的派生类,我想在这些函数的集合上调用Iterate()方法,为每个函数提供一个数据样本block。我只知道调用Iterate()时的数据类型。Iterate()方法对于许多函数来说几乎完全相同,所以我想使用模板

c++ - 动态编译时基类

请注意,这只是一个关于模板语法的问题——不是一般的c++面向对象、多态性设计。此示例是为此目的而捏造的假设我有一个基类:classA:publicB{...};我用它...Aa;a.DoSomething();如果我想做这样的事情,能够在编译时派生A,不仅来自B,还来自其他类。这样我就可以像这样使用它:Aa;//likeclassA:publicBa.doSomething();Aac;//likeclassA:publicCac.DoSomething();我可以做这样的事情吗?templateclassA:publicBASECLASS{...};让我们假设我的构造函数有一个参数,

c++:通过多级继承从模板子类调用基类的模板方法

我正在寻找从通过C::A和B::A继承它的子类D调用基类A的方法。templateclassA{public:templatevoidFunc(void){std::cout::Func"classB:publicA{};templateclassC:publicA{};classD:publicB,publicC{public:D(){static_cast*>(this)->A::Func();static_cast*>(this)->A::Func();}};这按预期工作,D在初始化时使用子类的模板参数调用B::A::Func和C::A::Func。但是,当D是模板类时,这似乎不

c++ - 如何判断一个类是否间接继承自基类?

您可以使用std::is_base_of检查一个类是否继承自某个基类,但我如何知道一个类是否直接继承自该类(即间接继承自该类)? 最佳答案 不可能直到N2965已实现。 关于c++-如何判断一个类是否间接继承自基类?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/26431613/

c++ - 设计一个将两个抽象基类对象作为参数的函数,并根据对象的派生类做不同的事情

==编辑3==最后,我只是在Shape和checkIntersect(Shape)中添加了一个抽象方法和让他们调用我的免费(非成员)函数,这些函数已经在一个地方实现,同时使用一些预处理器和头文件技巧来为自己保存一些重复代码,以防我需要添加其他子类。为了完成起见,我将标记Jeffrey的回答,因为他的回答最接近我所做的,但是我感谢你们所有人向我展示了一些我实际上不知道的很酷的东西(函数模板)并将我链接到其他2个问题也提出了Visitor/Doubledispatch作为解决方案。虽然我不得不说,但我希望我们能尽快在C++中看到多方法。==编辑结束==所以我有一个基类Shape及其子类:T