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)? –