小编Jin*_*Kim的帖子

普通对象变量还是JavaFX对象属性?

我正在开发一个 JavaFX 应用程序并尝试遵循模型-视图-控制器模式。我已经用普通的 java 对象(双精度、整数、字符串...)实现了模型,认为我会在非 JavaFX 项目中重用该模型。然而,我发现在没有属性的情况下,当模型发生变化时,很难使视图自动更新。在将每个变量更改为属性之前,我想问一下仅使用 JavaFX 属性来实现模型是否正确。

java javafx

2
推荐指数
1
解决办法
202
查看次数

检测基类的派生类破坏

问题

在 C++ 中,在对象销毁时,派生类析构函数在基类析构函数之前调用。派生类销毁时是否可以自动通知基类(即调用基类的成员函数)?

我可以在派生类析构函数中手动调用基类通知函数,但用户必须始终记住在从基类继承时添加该行,这是我想避免的。

背景

我正在构建一个多线程框架,从两个不同的线程(主线程和生产者线程)访问MyObject从类继承的类的对象。GeneralObject

当对象在主线程中被析构时,将调用 的析构函数,MyObject然后该类的析构函数将其自身从存储GeneralObject多态对象的所有“有效”指针的有效对象表中删除。GeneralObject这会阻止生产者线程访问不再存在的对象。

问题在于,在析构函数调用MyObject和析构函数调用之间的短暂时间内GeneralObject,存储在 valid-object-table 中的指针变成了悬空指针。它当然会在GeneralObject析构函数中被删除,但由于生产者线程可能会尝试在这段短时间内访问该对象,因此这是不安全的。我需要的函数将其自身从表中删除,以便在的销毁GeneralObject时调用。MyObject

我最终做了什么

正如@user17732522在评论中指出的,当MyObject进入 的析构函数时,指针已经无效,这使得我的方法不安全。我采用了 @HolyBlackCat 的解决方案,其中包装对象在MyObject调用 的析构函数之前在其销毁时MyObject调用 的指针删除函数。

c++ inheritance multithreading

2
推荐指数
1
解决办法
97
查看次数

标签 统计

c++ ×1

inheritance ×1

java ×1

javafx ×1

multithreading ×1