C 類 給結構體成員 函式指標 賦值

2021-07-09 21:11:50 字數 969 閱讀 3575

mystruct標頭檔案 mystruct.h

class cmyclass;

struct

mystruct;

cmyclass標頭檔案

class cmyclass

;cmyclass實現 cpp檔案

...void cmyclass::myclassinit()

;memcpy(&mystr,&mystr1 ,sizeof(mystruct ));

}...後面會頻繁用用mystr變數呼叫該結構體變數裡面的函式

這樣寫法用vc6可以編譯通過,也可以執行;

還有一種寫法,如下:

mystruct標頭檔案 mystruct.h

struct

mystruct;

cmyclass標頭檔案

class cmyclass

;//引數中的void* pobj用來傳遞cmyclass物件例項的指標,以便呼叫其他的非靜態成員

cmyclass實現 cpp檔案

...void cmyclass::myclassinit()

;memcpy(&mystr,&mystr1 ,sizeof(mystruct ));

第一種寫法傳不是指向靜態函式,是指向類普通成員的函式。在使用是必須有cmyclass物件呼叫的

obj.(mystr.func)(引數): .(mystr.func)相當於指向類普通成員的函式指標,必須有物件!

而第2種寫法這樣用:cmyclass::mystr.func)(引數)

第一種方式傳遞給變數mystr的函式指標為非靜態函式,由於函式中隱含了this,所以函式能夠根據this指標區分出不同的物件。

第二種方式的為靜態函式,但是你顯示的指定了this即void *pobj,使得靜態函式仍然能夠區分出不同的類物件。

綜上這兩種方式在多個cmyclass物件情況下,不會有衝突,因為你已經通過this指標或者void *pobj指定了不同的物件。

結構體指定成員賦值

includeusing namespace std void f int main test t t.function cout t.name endl return 0 d programming c g structpointertest.cpp d programming c cl stru...

物件賦值給結構體

package main import fmt log net sync time const address localhost 502 方法的巢狀!func main tcptransporter conn closetimer lastactivity 結構體 tcpclienthandler...

C 結構體和類的成員函式

1 使用結構體成員變數 還是 的區別?一般的結構體成員變數訪問用 即可,只用結構體指標訪問結構體成員才使用 include includeusing namespace std struct books int main 2 類成員函式可以在類內部宣告和定義,也可以在類內部宣告類外部使用範圍解析運算...