virtual-method

    1热度

    3回答

    考虑下面的代码: class Base { protected: virtual void methodDefinedInBase() = 0; } Class Derived: private Base { public: void someMethod(); protected: virtual void methodDef

    3热度

    2回答

    有一个little related question。但话题完全不同。 现在,一个概念是关于功能分辨率和另一个是关于class分辨率?我想知道如果他们使用相同的vtable(at least in gcc-4.5)怎么可能?这是一个与编译器相关的术语吗? 我知道这可能是一个基本的愚蠢问题,但我从来没有想过它。

    0热度

    3回答

    我正在调试一个奇怪的问题,其中一个对象VMT突然间似乎指向了基础对象的方法。 class Base { virtual void foo() {} } class Derived: public Base { void foo() {} } Derived * d = new Derived; ... much complex fettling ...

    0热度

    1回答

    我有一个问题给你。我有一种情况,根据ifStatement的结果生成一个列表。我的ifStatement是基于复选框是否被选中。如果是这样,我想要一个变量(比方说,时间)存储在某个地方,直到用户将被发送到一个新的活动,他/她将能够查看结果。 换句话说,用户将检查复选框或不复选框。如果他/她这样做,我想跟踪发生这种情况的每个实例。当用户满意主ifStatement,(假设,早餐结束),用户将能够看到

    4热度

    5回答

    假设这个结构 struct InterfaceForFoo { virtual void GetItDone() = 0; }; class APoliticallyCorrectImplementationOfFooRelatedThings : private InterfaceForFoo { public: void GetItDone() {

    7热度

    3回答

    我在使用C++中的虚函数时遇到了一些麻烦,我可能会在构造函数中滥用它们。问题是,当我将一个组件lib(由我编写)链接到我的最终可执行文件时,即使我已经为它编写了一个实现并将其链接,虚拟函数仍被标记为未定义。 我有以下类: template<class BufferType, class ConnectionType, class HandlerType> class UdpConnection

    2热度

    4回答

    我遇到了一个C#的嘲讽和测试方面的大蠢事。我对这个问题的解决方案是不可取的。 我有三个类一起执行一些功能。使用接口或显式声明任何虚方法是没有意义的,因为设计并没有真正需要扩展或多态。任何使类可重用的努力只会使代码复杂化。 但是,因为我没有明确地声明任何虚拟方法,所以我不能模拟出类并通过框架工作记录它们的调用。伪代码(使用Rhino.Mocks)看起来像这样。 var b = mockRepo.St

    9热度

    5回答

    想象一下,我有一个名为Engine的类作为抽象基类。我也有从它派生的ElectrictEngine和FuelEngine类。 我想创建一个加油引擎的方法。 我是否应该将它作为基类级别上的抽象方法进行处理,并将其命名为通用方式,例如fillUpEnergy? 问题是,如果我有一个电动引擎,该方法所需的参数数量与燃油引擎需要传递的参数数量不同。所以,该方法的签名是不同的。 此外,是否有任何智能的方法来

    8热度

    5回答

    struct A { virtual void foo(); // unused and unimplemented virtual void bar() {} }; int main() { A obj; // ok obj.bar(); // <-- added this edition A* pm = (A*)malloc(siz

    0热度

    6回答

    我正在为我的容器类派生一个基类,以便我可以维护一致的接口。目前,它看起来是这样的: template <typename Datatype> class BaseClass { public: virtual Datatype Foo() = 0; virtual Datatype Bar() = 0; }; template <typename Datat