我有两个类,如下所示:
class Plot
{
protected:
virtual void plot() = 0;
}
class DynamicPlot : public Plot
{
public:
virtual void update_real_time();
virtual void plot();
}
class StaticPlot : public Plot
{
public:
virtual void plot();
}
像这样的容器:
std::vector<Plot*> plot_vector;
plot_vector.append(new DynamicPlot());
plot_vector.append(new DynamicPlot());
plot_vector.append(new StaticPlot());
plot_vector.append(new StaticPlot());
如果实例的类型是 DynamicPlot,我想调用 update_real_time()。
foreach(Plot *plot, plot_vector)
{
if(/* plot type == DynamicPlot */)
{
plot->update_real_time();
}
plot->plot();
}
我应该在这里使用哪种模式?在 StaticPlot 类中添加一个空的 update_real_time() 方法似乎不是一个好的解决方案。
编辑:上面的代码不是真实的。我只是为了告诉我的问题而写它,认为这是一个伪代码。我懒得写访问限定符。在我的真实代码中,我没有私有继承或切片问题。我将实例的指针保存在向量中。抱歉,误解了。无论如何,我正在修复它。