virtual-method

    21熱度

    4回答

    考慮以下標準CRTP例如: #include <iostream> template<class Derived> struct Base { void f() { static_cast<Derived *>(this)->f(); } void g() { static_cast<Derived *>(this)->g(); } }; struct Foo :

    2熱度

    3回答

    這個想法如下。我有一個庫版本1類(如下所示): class MY_EXPORT MyClass { public: virtual void myMethod(int p1); } 在第2版,類進行了修改,這一點: class MY_EXPORT MyClass { public: virtual void myMethod(int p1); virtu

    3熱度

    3回答

    我想寫一個允許用戶實現某些行爲的小型庫,以便庫可以使用他自己的基礎數據結構。在這種特殊情況下(雖然我簡化了),我試圖定義是這樣的: class LibraryClass { virtual std::vector<int>::const_iterator intsBegin() const = 0; virtual std::vector<int>::const_iterato

    2熱度

    2回答

    假設我有一個名爲libplugin的共享庫。在此共享庫中,有一類: class Plugin { public: virtual void doStuff(); }; 讓我們也假設有一個名爲libspecialplugin另一個共享庫。它包含以下類和函數: class SpecialPlugin : public Plugin { public:

    2熱度

    1回答

    我想用一個虛函數擴展一個抽象基類,並將函數名稱保持爲虛擬,但在「可能」重寫的子函數之前和之後運行代碼。 下面是一個例子: 我對事物的基類(接口),可以得出: class IDraw { public: virtual void do_draw(Screen *scr) = 0; }; 我想保持這種接口在子類中,並能夠覆蓋它, 例如我有一個遊戲,其中清潔所述屏幕的一類,繪

    1熱度

    1回答

    我創建了基類指針併爲它分配了新的派生類。 class Base { public: virtual void f(int); virtual void f(double); virtual void g(int i = 10); }; void Base::f(int) { cout << "Base::f(int)" << endl; }

    3熱度

    2回答

    我對類型轉換的安全性有一些擔憂我設計了一個抽象接口,女巫將由插件導出面向對象的C ABI ,即指向對象的指針和形式爲func(void *this, ...)的C風格函數,而不是C++樣式的成員函數,然後這些函數將被打包到表示對象實現的結構中。但是,我的一些底層框架使用多個虛擬繼承。 簡單的例子 class A { public: virtual void doA() }

    -7熱度

    1回答

    C#編程語言的問題。 問題:「父類的虛擬方法有其自己的實現主體塊」。 我的回答:「假」。 我的回答正確嗎?如果不是,請解釋我,夥計們。

    1熱度

    2回答

    在正偏移量處,VMT存儲指向所有用戶定義虛擬方法的指針。 我需要編寫一些代碼來掛鉤VMT。 我這樣做的方式是獲取指向祖先類中的虛擬方法的指針。 比方說:TCustomForm.ShowModal。然後我查找了TCustomForm的VMT中的偏移量。有了這個偏移量,我去TMyForm並改變它的VMT指向我需要的功能。 我想概括一下這個方法,爲了做到這一點,我想知道VMT的條目總數,所以我不會搜索結

    0熱度

    3回答

    我想實現訪問某一類: class A { some properties and methods }; 的問題是有多種狀態A可以在與方法需要相應的行爲。其中一種方法是: class A { void Method1() { if (A is in state 1) { do something } else if (A is in state 2) { do