草庐IT

多重性

全部标签

C++ 多重虚拟继承与 COM

网络上充斥着对"dreadeddiamondproblem"的解释.StackOverflow也是如此。我想我有点理解,但我无法将这些知识转化为理解相似但不同的东西。我的问题一开始是一个纯C++问题,但答案很可能会分支到MS-COM细节。一般的问题是:classBase{/*purevirtualstuff*/};classDer1:Base/*Non-virtual!*/{/*purevirtualstuff*/};classDer2:Base/*Non-virtual!*/{/*purevirtualstuff*/};classJoin:virtualDer1,virtualDer

具有从模板多重继承的 C++ 重载运算符

我有一个表示HTTP客户端某些部分的层次结构,如下所示:typedeflist>KeyVal;structHeader{stringname;stringvalue;...};structParam{stringname;stringvalue;...};/*Somethingthatcontainsheaders*/templateclassWithHeaders{KeyValheaders;public:virtualT&operator(h.name,h.value));returnstatic_cast(*this);}};/*Somethingthatcontainsquer

c++ - 获取 boost.log 记录器的严重性..?

假设我有一个简单的boost.logseverity_logger记录器设置如下:logging::core::get()->set_filter(logging::trivial::severity>=logging::trivial::debug);logging::add_common_attributes();src::severity_loggerlogger;我如何以编程方式检查严重性?IE。像logger.getSeverity()..?这样的东西我已经在StackOverflow上筛选了文档和其他问题,但就是找不到什么应该是一个简单的API调用......?

c++ - 多重继承引起的C++拷贝构造函数调用不明确

我在执行某项任务时遇到了问题,这是一个练习,而不是一个真正的程序。任务是定义结构D的复制构造函数,其行为方式与编译器生成的复制构造函数完全相同。classOb{};structA{Oba;};structB:A{Obb;};structC:A,B{Obc;};structD:C,A{Obd;};如您所见,结构A在结构D中间接派生了几次,这导致了复制构造函数定义中的歧义,如下所示:D(constD&_d):C(_d),A(_d),d(_d.d){}我的问题是如何正确定义复制构造函数?没有上述定义的代码编译通过,所以看起来应该是可以的。MinGW4.8.1错误信息:zad3.cpp:12:

c++ - dynamic_cast 真的适用于多重继承吗?

我想看看是否可以创建“接口(interface)”,继承它们,然后在运行时检查是否有任何随机类实现了该接口(interface)。这是我的:structGameObject{intx,y;std::stringname;virtualvoidblah(){};};structAirholder{intoxygen;intnitrogen;};structTurf:publicGameObject,publicAirholder{Turf():GameObject(){name="Turf";}voidblah(){};};voidremove_air(GameObject*o){Air

C++多重继承函数合并

我有:classXILightSource{public:virtualXVec2position()const=0;};classXLightSprite:publicXSprite,publicXILightSource{};问题是XSprite已经有相同的函数position。我怎么能告诉编译器,我想使用XSprite::position函数作为XILightSource::position()的实现? 最佳答案 覆盖它并调用XILightSource::position():classXLightSprite:publicX

c++ - 多重继承 : size of class for virtual pointers?

给定代码:classA{};classB:publicvirtualA{};classC:publicvirtualA{};classD:publicB,publicC{};intmain(){cout输出:sizeof(D)8每个类都包含自己的虚指针,但不包含其任何基类的虚指针,那么,为什么class(D)的Size是8? 最佳答案 这取决于编译器的实现。我的编译器是VisualStdioC++2005。代码如下:intmain(){cout会输出sizeof(B):4sizeof(C):4sizeof(D):8B类只有一个虚指针

c++ - 多重继承解决抽象类

假设我有4个类:classI{public:virtualvoidX()=0;};classA:publicvirtualI{public:virtualvoidX(){}};classB:publicI{};classC:publicA,publicB{};I,B和C是抽象的,其中A不是。如果我简单地添加virtual继承I对于B,然后A::X()解决I::X()在C.但是,我无法更改B的来源.我的问题:我能得到A::X()吗?解决I::X对于C无法更改B?我试过声明A和B虚拟到C无济于事。我试图没有冗余代码(例如让C声明X(){A::X();})。有什么巧妙的技巧吗?另外-有几个问

c++ - 如何在多重继承中实现同名虚函数

这个问题在这里已经有了答案:Inheritinterfaceswhichshareamethodname(5个答案)关闭9年前。代码如下//AhasavirtualfunctionF().classA{public:virtualvoidF(){};};//ThesameforB.classB{public:virtualvoidF(){};};//CinheritsAandB.classC:publicA,publicB{public://Howtoimplementthe2virtualfunctionswiththesamenamebutfrom//differentbasecl

c++ - 如何确定特定键在多重映射中是否唯一?

我有一个multimap我想知道某个特定键是否最多一次出现在map中。我知道我可以打电话multimap.equal_range(key)在包含key的范围的开始和结束处找到一个迭代器但我想知道range.first之间是否只有一个元素和range.second.有没有比增加range.first更好的方法?查看它是否等于range.end的值?自multimap::iterator是双向的,撤消增量并不是什么大不了的事情,但这样做似乎很草率。 最佳答案 你能检查一下std::multimap::count(key)是否是==1?