vtable

    0熱度

    2回答

    我收到標題中指出的錯誤消息。我試圖構造一個繼承Shape類的類Line。在行構造函數中執行 Shape(color) {} 錯誤。 頭文件(形狀和線條於一身,顏色不同) Shape.h: #ifndef SHAPE #define SHAPE #include "Image.h" class Shape{ private: Color color; public:

    5熱度

    4回答

    這是我的問題。我有一個基類和一個派生類,它覆蓋了基類中的一些方法。爲簡單起見考慮下面的例子: struct base { virtual void fn() {/*base definition here*/} }; struct derived : base { void fn() {/*derived definition here*/} }

    0熱度

    1回答

    我正在做一些關於dexdump的研究。現在,有一個讓我困惑的問題。 當你看dexdump結果,你會發現這樣的代碼「虛函數表」: 000854: fa20 a900 4300 |0000: +invoke-super-quick {v3, v4}, [00a9] // vtable #00a9 00085a: 1500 037f |0003: const/high16

    1熱度

    4回答

    我有一個類中聲明如下: class TestFoo { public: TestFoo(); virtual void virtualFunction(); void nonVirtualFunction(); }; ,我嘗試實施這種方式 TestFoo::TestFoo(){} void TestFoo::nonVirtualFunction(){}

    15熱度

    2回答

    假設我有以下代碼 void f(PolymorphicType *p) { for (int i = 0; i < 1000; ++i) { p->virtualMethod(something); } } 將編譯器生成的代碼提領p的vtable條目virtualMethod 1或1000倍?我正在使用微軟的編譯器。 編輯 這裏是現實世界的情況下,

    0熱度

    1回答

    我有一個由CMake驅動的庫和示例應用程序。所以,還有一類,就是我在圖書館使用: sourceeditor.h #ifndef SOURCEEDITOR_H #define SOURCEEDITOR_H #include <QWidget> #include "novile_export.h" namespace Novile { class SourceEditorPrivat

    7熱度

    2回答

    我希望能找到一個提示(最好很好的例子),用於C.實現動態調度 我學習C和實踐,我想翻譯從Java到C使用動態分派虛擬方法表。 ,比如我有一個java代碼: abstract class Foo { public abstract int val(); public abstract Boolean error(); } class Fail extends Foo {

    1熱度

    4回答

    我目前正在使用虛擬功能的用戶程序。我只使用一個虛擬功能,並遇到了似乎是我嘗試過的一個常見解決方案的常見問題,但不幸的是沒有成功。 我最初有virtual void calcArea();在BasicShape.h中沒有任何定義或指定爲純虛函數。我改變了它,並添加{}末(上有類似的問題,另一個線程的建議),但我仍然得到以下錯誤: 我輸入: g++ BasicShape.h BasicShape.cp

    4熱度

    1回答

    我正在使用llvm-py爲一些人工創建DIY編譯器,並且需要在全局範圍內有一個虛擬方法表。我的概念是有幾個函數指針數組(每個類一個)。不幸的是,沒有用於全局作用域的LLVM IR Builder,我不能使用ptrtoint來使所有數組元素具有統一類型(否則我會將函數地址存儲爲64位整型,並在調用之前將它們轉換爲適當的類型)。你知道任何合理的解決方案嗎?它也可以用C++ LLVM api來說明,因爲

    4熱度

    2回答

    我寫了這個非常簡單的C++程序,我想知道爲什麼編譯器通過兩個指針解引用來佈置vtable。這裏的C++程序: class Foo { public: virtual void bar() { } }; int main(int argc, char *arv[]) { Foo foo; Foo *foo_p(&foo); foo_p->ba