通过添加新方法来演化类

时间:2015-04-30 11:06:25

标签: c++

我们说我有一些课

class A {
...
};

将一些变量和方法封装在里面。我的问题是,如果课程可以学习"新方法 - 一些函数将新方法放在类体中。

例如,我有一个空类

class Draw {};

我的程序中的一些函数从文件中读取数据并基于它可以绘制圆形,方形等。是否可以将这些绘制方法放在Draw类体内以使其动态增长?

2 个答案:

答案 0 :(得分:2)

class Draw
{
public:
    ReturnType call(const std::string& methodName, ArgTypes args)
    {
       return methods[methodName](this, args);
    }

private:
    std::unordered_map<
       std::string,
       std::function<ReturnType(Draw*, ArgTypes)>
    > methods;
};

根据需要添加到methods

(我已经抽象出ReturnTypeArgTypes;在那里挑选你需要的东西。)

答案 1 :(得分:0)

简单回答&#34;我的问题是,如果班级可以学习&#34;新方法 - 一些功能是将新方法放入类体中#34;不是