member-function-pointers

    1熱度

    2回答

    我的班級有3個州。在每一種狀態下,它都會做一些工作,並進入其他狀態,或者保持在相同的狀態(95%或更多的情況下,它將保持在相同的狀態)。我可以實現狀態模式(我假設你知道它)。我很喜歡的另一種方法是: 我有一個每個狀態的成員函數,還有一個指向成員函數的指針,它指向當前狀態函數。當我想進入另一個狀態時,我只是將該函數指針指向另一個狀態函數。 (也許這不完全等同於狀態模式,但在我的情況下它工作正常)。

    1熱度

    1回答

    A bit of background for the unified call proposal 是否統一調用語法允許C++程序員可以輕鬆地投一個成員函數指針到非成員函數指針,反之亦然? 換句話說,它允許通過發送類的實例作爲第一個參數來調用成員函數經由非成員函數指針? struct X { void member() { } }; X x; void (*fp)(X*) =

    0熱度

    1回答

    我有一個指向一個COM對象pfoo實現IFoo的指針。我想獲得pfoo-> Bar()的地址,它是IFoo的一種方法。由於COM對象有很好的文檔記錄,所以這應該很容易。事實上,它是。如果酒吧()是,比如說,在接口的第五種方法(會計課程IUnknown方法的),地址可以從虛表中提取與 (*(void***)(pfoo))[5] 我的問題是,有沒有辦法做到這不需要使用「5」?看起來很容易出錯,不得

    1熱度

    1回答

    我在線看到了這個代碼,我想知道它是如何實現的。由於成員函數指針不能分配給基類的成員函數指針,我很好奇派生類的成員函數的指針在哪裏存儲以及如何存儲。 這是測試聲明 #ifndef TestStudent_h #define TestStudent_h #include <iostream> #include <string> // Note 1 #include "TestCase.h

    -1熱度

    2回答

    比方說,我們有一個類A它有一個方法void foo()。我知道我可以通過使用&A::foo得到指向foo()的指針,但是這個指針似乎只依賴類類型,而不是在實例化對象上。如果我們有兩個對象a1和a2類型A,我們如何才能使用指針,成員函數指針或甚至指針地址之間的差異和a2foo()方法?基本上,我希望能夠得到一個指向a1對象內的void foo()方法的指針,該指針與指向a2中的void foo()方

    0熱度

    2回答

    我正在使用函數bfd_find_nearest_line來查找函數的源位置(從帶有調試符號的可執行文件 - 編譯爲-g)。自然的論據之一是函數指針我想定位: boolean _bfd_elf_find_nearest_line (abfd, section, symbols, offset, filename_ptr,

    3熱度

    1回答

    struct foo { void bar(int&&) && { } }; template<class T> using bar_t = void (std::decay_t<T>::*)(int&&) /* add && if T is an rvalue reference */; int main() { using other_t = void (fo

    9熱度

    1回答

    使用reinterpret_cast將指向成員函數的指針轉換爲另一個指向同一類的成員函數是否合法?以下示例工作。但是合法嗎? #include<iostream> #include<vector> #include<string> class A { public: void func_int(int x) { std::cout << x << std::endl;

    0熱度

    2回答

    我正在爲不同類型創建容器模板。其中一種是shared_ptr來反對。因此,對於操作數->和.調用對象方法餘米試圖通過指針的方法函數參數避免重複代碼,但我得到這個錯誤: error: invalid use of non-static member function 'void A::show()' { doOperation(U::show); } 代碼: template <typenam

    0熱度

    1回答

    我努力創建派生類並將方法指針從它傳遞給基類,以便在基類中聲明的函數可以調用它(通過接口調用派生類的函數)。 目標是創建派生類來引入它們自己的資源和函數,但是通過在基類提供的函數中調用其中一個函數來調用函數應該是可能的。爲此,我需要將派生的成員函數指針傳遞給基類。 這裏是我的嘗試: class KeyFunction { void(*KeyFunction::KeyFuncPtr)()