我有一个std::map
保存指向类的指针的地方。在类的构造函数中传递了几个值,因此类中的变量具有实际值。我的问题是,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 -> null 指针来获得类指针。