【发布时间】:2014-06-20 10:27:24
【问题描述】:
我的情况是,我认为两种实现都是正确的,但我不知道该选择哪一种。
我有一个模拟读卡器的应用程序。它有一个 GUI,您可以在其中选择要使用的串行端口和速度,以及一个播放和停止按钮。
我正在寻找阅读器构建的最佳实现方式。
我有一个 SimulatorCore 班级,与我的申请一样长
SimulatorCore 实例化Reader 类。并且可以在多个串口上模拟多个阅读器。
两种可能:
我的
Reader是一个指针(动态实例化),我在播放按钮时实例化它,当停止按钮时删除它。我的
Reader是一个对象(静态实例化),我在SimulatorCore构造函数中对其进行实例化,然后在我的Reader 类中创建并调用Reader.init()和Reader.cleanup(),并在播放和停止时调用它们打
我个人是看功能方面的,明明是想用指针,不模拟reader就不用reader实例化。
有人说我应该使用静态实例化(原因:为了安全,因为“当你可以选择不使用指针时,使用指针很糟糕”)
我不熟悉它们,但我想我也可以使用智能指针。
代码示例:第一种解决方案:
class SimulatorCore
{
play(){reader = new Reader();};
stop(){delete reader; reader = nullptr;};
private:
Reader *reader;
}
代码示例:第二种解决方案:
class SimulatorCore
{
play(){reader.init();};
stop(){reader.cleanup();};
private:
Reader reader;
}
代码未经测试,我只是为了说明而写下来。
什么是最好的解决方案?为什么?
【问题讨论】:
标签: c++ instantiation simulator