如何解决在调用类的方法时更改指向该类的指针会引起问题吗?
首先,我想说这不是Is it safe to change a function pointer (std::function) inside a called function?的重复(或者至少我不相信),因为我没有使用 std ::职能。也不仅仅是被更改的函数指针;我使用“普通”指针来引用包含多个方法的对象,其中一个方法调用包含该指针的对象以对其进行更改。
这在过去一直有效,但是我不确定是否应该这样做。
代码如下:
class entry {
public:
void handleEvent(byte button_id,byte flags);
void virtual left(byte type) {}
void virtual right(byte type) {}
void virtual center(byte type) {}
void virtual draw() {}
void virtual idle() {}
void virtual load() {}
};
class menu_class {
entry *object;
public:
void registerEntry(entry *obj);//sets 'object' from passed argument
void update();//draws menu and reads buttons to call associated functions in the 'entry' object
};
要使用此功能,我定义了一个子类来继承entry
,然后在其中定义函数(因为每个菜单的行为不同)。然后,我将其指针传递到menu_class
对象中父对象类型(此处显示的类型)的指针,并在事件发生时(通过轮询和对{的重复调用来完成) {1}}。
要打开其他菜单,update
中的方法之一将调用菜单控制器的entry
方法。这样会将指向调用registerEntry
对象的指针替换为指向新菜单项对象的指针。
这会导致程序开始执行任意代码或错过返回参数(尽管目前我在这里没有)吗?
我还有一些相关的问题,我不确定这些问题是否属于同一问题。我应该将以下内容移至一个新问题:
如果我要创建一个指针数组(或一个包含指针的小对象数组),更改用作该数组索引的变量(在调用对象的指针方法时)很好吗?
如果要动态分配正在调用其方法的对象,当我切换到新菜单时,如果将其作为entry
的一部分进行分配,会发生什么情况? (让我们假设我没有进一步引用该对象的内部变量,但是即使如此,我仍然可以想象它现在正在使用不再存在的内存。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。