我有一個std::map
,我保存一個指向類的指針。在類的構造函數中傳遞了幾個值,以便類中的變量具有實際值。我的問題在於,當我調用一個使用先前定義的變量之一的類的函數時,關鍵字this
會產生分段錯誤。這看起來像這樣詳細(短版):「this」關鍵字導致分段錯誤
Command::Command(const char *name, commandHandler h) // commandHandler is a function pointer
{
this->name = name;
this->handler = h;
}
Command::execute(int cn, std::vector<char *> args)
{
if (this->handler != NULL) // "this" is according to gdb a pointer to a class Command at 0x0
(handler)(cn, args);
}
地圖是在一個靜態類,地圖元件插入在一個靜態函數。
編輯:由於意見和答案(謝謝你們): 我的指針添加到類的功能registerCommands()基本上創建使用Command *command_xxx = new Command("xxx", &(handler_func));
指針並提出在地圖中的一個靜態類。該調用來自與map和registerCommands()函數在同一類中的另一個方法。類指針是使用commands.find("xxx")->second;
獲得的,它返回null - >空指針。
顯示調用代碼 – Kal
根據上下文,確切的問題無法確定。根據描述,要調用該函數的對象將丟失,或者在調用成員函數時提供一個有趣的指針(例如空指針)。 –