mfc中靜態函式呼叫非靜態成員
靜態函式中呼叫非靜態,首先要獲取到對話方塊指標,最簡單最不推薦的方法是定義個全域性變數儲存對話方塊指標,通用性最強的是把指標作為靜態函式的引數傳進來。取巧的方法,如果對話方塊是主對話方塊可以AfxGetApp->GetMainWnd獲取指標。如果靜態函式不是執行在主執行緒,不能直接呼叫Updatedata這種直接或間接通過訊息實現的函式。正確的做法是發訊息給主執行緒,讓主執行緒來更新。
其實把類自己的指標作為引數傳入到靜態函式中 就可以使用了
相關推薦
mfc中靜態函式呼叫非靜態成員
靜態函式中呼叫非靜態,首先要獲取到對話方塊指標,最簡單最不推薦的方法是定義個全域性變數儲存對話方塊指標,通用性最強的是把指標作為靜態函式的引數傳進來。取巧的方法,如果對話方塊是主對話方塊可以AfxGetApp->GetMainWnd獲取指標。如果靜態函式不是執行在主執行緒,不能直接呼叫Upda
C++Static 靜態函式呼叫非靜態函式
test.h class test : { public: test(void); ~test(void); public: //你的其他函式 ... ..
C++ 靜態成員函式呼叫非靜態成員函式方法
#include <stdio.h> #include <windows.h> class Class; typedef struct { Class *pClass; int x; int y; }ParaNode; class Cl
【PHP】靜態方法呼叫非靜態方法和靜態呼叫非靜態方法程式碼解讀
static 關鍵字用來修飾屬性、方法,稱這些屬性、方法為靜態屬性、靜態方法。 在類的靜態方法中是不能直接以$this->test()的方式呼叫非靜態方法的。還有框架中靜態的呼叫非靜態方法是怎麼回事??? 。。。 算了,不知道說啥 具體為啥看程式碼註釋: <?ph
Java靜態方法呼叫非靜態方法
靜態方法(static mehod)不能直接呼叫非靜態方法(non-static method),可以通過一個物件的引用傳入靜態方法中,再去呼叫該物件的非靜態方法。在主函式(static方法)中,經常建立某個類的例項,再利用其引用變數呼叫他的非靜態方法。 public cl
java 靜態方法呼叫非靜態內部類報錯
Error: No enclosing instance of type *** is accessible. Must qualify the allocation with an enclosing instance of type *** (e.g. x.new A
java中靜態方法為什麼不可以呼叫非靜態方法
重點:static關鍵字的修飾成員變數,成員方法和物件無關。 static修飾的內容是隨著類的載入而載入的,且只加載一次。 它儲存於一塊固定的記憶體區域(靜態區),所以,可以直接被類名呼叫。 它優先於物件存在,所以,可以被所有物件共享。 static可
java中靜態方法中為什麼不能使用this、super和直接呼叫非靜態方法
這個要從java的記憶體機制去分析,首先當你New 一個物件的時候,並不是先在堆中為物件開闢記憶體空間,而是先將類中的靜態方法(帶有static修飾的靜態函式)的程式碼載入到一個叫做方法區的地方,然後再在堆記憶體中建立物件。所以說靜態方法會隨著類的載入而被載入。當你new一個物件時,該物件存在於對
Java類中的靜態屬性、靜態程式碼塊塊、非靜態屬性、非靜態程式碼塊塊、建構函式在初始化時的執行順序
序言 前幾天在複習J2SE的時候,看到了這個Java類在new的過程中,靜態域、靜態塊、非靜態域、非靜態塊、建構函式的執行順序問題。就想著自己總結寫一下,便於以後查閱總結: 以下是我整理好的結果;在java類new一個物件的過程中,它們的執行順序如下: (當
C++靜態成員函式訪問非靜態成員變數的方法
靜態成員函式不能訪問非靜態成員,這是因為靜態函式屬於類而不是屬於整個物件,靜態函式中的 member可能都沒有分配記憶體。靜態成員函式沒有隱含的this自變數。所以,它就無法訪問自己類的非靜態成員。但
類成員函式轉換成void (*)和靜態成員函式獲取非靜態成員變數的方法
很多第三方函式需要把函式轉換成void(*)型別,如libevent 1.4版本中的event_set函式: 如果要傳遞類成員函式給相應的函式我們應該怎樣處理呢? 僅僅傳遞類成員函式可以嗎? 不可以的!編譯的時候會遇到下面的錯誤: cannot convert DataWa
為什麼靜態方法無法呼叫非靜態成員(方法和變數)
當New 一個物件的時候,並不是先在堆中為物件開闢記憶體空間,而是先將類中的靜態方法(帶有static修飾的靜態函式)的程式碼載入到一個叫做方法區的地方,然後 再在堆記憶體中建立物件。所以說靜態方法會隨著類的載入而被載入。當你new一個物件時,該物件存在於對記憶體中,this
Qt for android如何在靜態java類中呼叫非靜態方法
一般正常情況開發下,在java的靜態類方法中,呼叫一個非靜態方法是會報錯,編譯不通過的,但是在Qt呼叫Java正常函式會不生效,不會出現任何異常提示,反正呼叫了就跟沒呼叫一樣,這個是我再Qt5.6中測試過的效果,現在Qt5.9不知道修復了這個問題沒有,反正現在
C++函式呼叫之靜態成員函式
首先,定義如下類A: class A { private: static int val_s; public: static int getVal(){cout << "call getVal in A..." << endl;re
靜態方法中呼叫非靜態方法
我們都知道,靜態static方法中不能呼叫非靜態non-static方法,準確地說是不能直接呼叫non-static方法。但是可以通過將一個物件的引用傳入static方法中,再去呼叫該物件的non-static方法。 其實這個事實的應用很經常,以至於我
關於“在內聯彙編中不能呼叫類的成員函式“的誤解
MSDN的"inline assembly"中明確說明:在__asm塊中只能呼叫未過載的全域性C++函式,不能呼叫過載的全域性C++函式或一個類的成員函式。在VC6.0中,的確不能使用內聯彙編呼叫類的成員函式。但是經本人試驗,在VC2003中可
java細節之類中的靜態塊和非靜態塊的執行情況
這篇文章來源於一道面試題: public class TestBean extends F{ public TestBean(){ System.out.println("testbean constructor")
淺析java中靜態方法,非靜態方法和構造方法的執行順序問題
https://blog.csdn.net/qq_42401622/article/details/81190406 對於java中的靜態方法,非靜態方法和構造方法的理解: 靜態方法是隨著的java中虛擬機器的類的載入而載入,是跟隨繫結在一起的。 public class Main{ s
java中靜態方法和非靜態方法的區別
靜態方法和非靜態方法主要有兩個區別: 1.在外部呼叫靜態方法時,可以使用"類名.方法名"的方式,也可以使用"物件名.方法名"的方式。而例項方法只有後面這種方式。也就是說,呼叫靜態方法可以無需建立物件。 2.靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法),而
java中靜態變數與非靜態變數的區別
靜態變數與非靜態變數的區別如下: 1.記憶體分配 靜態變數在應用程式初始化時,就存在於記憶體當中,直到它所在的類的程式執行結束時才消亡; 而非靜態變數需要被例項化後才會分配記憶體。 2.生存週期 靜態變數生存週期為應用程式的存在週期; 非靜態變數的存在週期取決於