mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-30 20:15:35 +08:00
Ref T709 Prevent instantiation of CXSwiftBusSettingsQtFree, to avoid slicing.
- Constructors and destructor are protected. - Therefore destructor doesn't need to be virtual. - objectUpdated is pure virtual, so the class is abstract. - Both derived classes are declared final.
This commit is contained in:
@@ -27,7 +27,7 @@ namespace BlackMisc
|
||||
namespace Settings
|
||||
{
|
||||
//! XSwiftBus settings
|
||||
class BLACKMISC_EXPORT CXSwiftBusSettings :
|
||||
class BLACKMISC_EXPORT CXSwiftBusSettings final :
|
||||
public CValueObject<CXSwiftBusSettings>,
|
||||
public CXSwiftBusSettingsQtFree,
|
||||
public ITimestampBased
|
||||
@@ -88,7 +88,7 @@ namespace BlackMisc
|
||||
|
||||
protected:
|
||||
//! \copydoc CXSwiftBusSettingsQtFree::objectUpdated
|
||||
virtual void objectUpdated() override;
|
||||
virtual void objectUpdated() override final;
|
||||
|
||||
private:
|
||||
BLACK_METACLASS(
|
||||
|
||||
@@ -147,11 +147,6 @@ namespace BlackMisc
|
||||
const milliseconds ms = duration_cast<milliseconds>(system_clock::now().time_since_epoch());
|
||||
m_msSinceEpochQtFree = static_cast<int64_t>(ms.count());
|
||||
}
|
||||
|
||||
void CXSwiftBusSettingsQtFree::objectUpdated()
|
||||
{
|
||||
// void
|
||||
}
|
||||
} // ns
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
@@ -24,16 +24,17 @@ namespace BlackMisc
|
||||
*/
|
||||
class CXSwiftBusSettingsQtFree
|
||||
{
|
||||
public:
|
||||
protected:
|
||||
//! Constructor.
|
||||
CXSwiftBusSettingsQtFree();
|
||||
|
||||
//! JSON Constructor.
|
||||
CXSwiftBusSettingsQtFree(const std::string &json);
|
||||
|
||||
//! Dtor
|
||||
virtual ~CXSwiftBusSettingsQtFree() {}
|
||||
//! Destructor.
|
||||
~CXSwiftBusSettingsQtFree() = default;
|
||||
|
||||
public:
|
||||
//! DBus server
|
||||
const std::string &getDBusServerAddress() const { return m_dBusServerAddress; }
|
||||
|
||||
@@ -112,7 +113,7 @@ namespace BlackMisc
|
||||
//! @}
|
||||
|
||||
//! Object has been updated
|
||||
virtual void objectUpdated();
|
||||
virtual void objectUpdated() = 0;
|
||||
|
||||
std::string m_dBusServerAddress { "tcp:host=127.0.0.1,port=45001" }; //!< DBus server
|
||||
std::string m_nightTextureMode { "auto" }; //!< night texture mode
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace XSwiftBus
|
||||
/*!
|
||||
* XSwiftBus/swift side settings class, JSON capable, shared among all services
|
||||
*/
|
||||
class CSettings : public BlackMisc::Simulation::Settings::CXSwiftBusSettingsQtFree
|
||||
class CSettings final : public BlackMisc::Simulation::Settings::CXSwiftBusSettingsQtFree
|
||||
{
|
||||
public:
|
||||
//! Constructor.
|
||||
@@ -27,8 +27,9 @@ namespace XSwiftBus
|
||||
//! JSON constructor
|
||||
CSettings(const std::string &json);
|
||||
|
||||
//! Destructor;
|
||||
virtual ~CSettings() {}
|
||||
protected:
|
||||
//! \copydoc CXSwiftBusSettingsQtFree::objectUpdated
|
||||
virtual void objectUpdated() override final {}
|
||||
};
|
||||
|
||||
//! Something owning the settings
|
||||
|
||||
Reference in New Issue
Block a user