呼叫成員函式cmp排序時出錯的解決方法

2021-10-22 23:44:08 字數 666 閱讀 3563

在乙個類中

我想使用sort函式呼叫同乙個類中的cmp函式時

class

aint

st(vector<

int>

&a)}

會發生錯誤:

因為成員函式。究其原因,是因為非靜態的成員函式必須被繫結到乙個類的物件或者指標上,才能得到被呼叫物件的this指標,然後才能呼叫指標所指的成員函式(我們知道,所有類的物件都有自己資料成員的拷貝,但是成員函式都是共用的,為了區分是誰呼叫了成員函式,就必須有this指標,this指標是隱式的新增到函式引數列表裡去的)。

所以上述成員函式實際上的引數有三個:

bool

cmp(a *

this

,int x,

int y)

這樣我們才可以呼叫this指標修改物件。

但是sort需要的cmp函式指標和成員函式指標不同,所以需要將cmp轉為所需的函式型別

靜態成員函式指標和普通函式指標是相同的,所以只要在前面加上static使之變為靜態成員函式即可:

static

bool

cmp(

int x,

int y)

空指標的成員函式呼叫

自 http hi.baidu.com sangwf blog item 0be10af482d0c46edcc47464.html 我一直認為技術是沒有止境的,不管你怎麼去學,總有你沒有掌握的地方。但是,人,是不能停下腳步的。今天在檢查乙個mfc程式,看到getsafehwnd函式,於是讓我想明白...

空指標的成員函式呼叫

指標為null了,函式還能呼叫嗎?於是寫了乙個簡單的程式來做測試,如下 class a 測試發現,程式能夠正常執行。把p賦乙個非空值如p a 123 同樣如此。於是想搞明白這到底是怎麼一回事。雖然以前明白類成員函式中其實是隱藏了乙個this指標,但不同的例項在呼叫函式時是如何工作的,還不是很清楚。通...

成員函式呼叫delete this的問題

有如下程式,那麼會有什麼樣的結果?程式會崩潰麼?結果 程式執行正常,設定fun2也能夠正常執行,以下是列印出來的結果,分析 根本原因在於記憶體模型。物件裡只存有資料成員跟虛函式指標 如果有的話 而 內容則是單獨存在在另外的地方。在呼叫成員函式的時候,都會隱含傳遞乙個this指標,目的是讓當前函式知道...