0
我使用MonkSVG庫:boost :: shared_ptr,繼承後訪問變量?
一個類對象的定義爲:
//mkSVG.h
namespace MonkSVG {
using namespace std;
class SVG;
class ISVGHandler {
public:
typedef boost::shared_ptr<ISVGHandler> SmartPtr;
...
ISVGHandler::SmartPtr _handler;
...
然後該庫的作者定義another class:
class OpenVG_SVGHandler : public ISVGHandler
,則有可能通過_handler
從0開始訪問變量。
我繼承了我自己的兩個類:第一個來自ISVGHandler
,第二個來自SVG
,第一個有自己的變量,但我無法直接訪問它們。我發現的唯一解決方案是創建setter-getter方法,但即使如此,我需要在根類和最後一個繼承類中定義它們。
有沒有更好的解決方案?
'boost :: dynamic_pointer_cast'出現在腦海中,但如果您確實需要這一點,則應該重新考慮您的設計。如果你需要派生類的一個實例,那麼明確地說出來,而不是(可能很危險)。 – arne
我假設你必須使用工廠生成器來構造處理程序,static ISVGHandler :: SmartPtr OpenVG_ISVGHandler :: create()?是否存在多種不同類型的SVG與多種不同類型的SVGHandler混合在一起的風險,還是程序總是隻使用一種類型(OpenVG)? –