多态类的堆栈
|
亲爱的C ++专业人士。我有问题我有一个程序,其中有1个抽象类base_class和2个派生类:sippeers和dbget。它还有2个线程。第一个线程从用户那里获取命令,第二个线程处理这些命令。这两个派生类代表不同的命令。因此,我必须创建某种类型的堆栈,在该堆栈中,应将第一个线程中的用户命令放入第二个线程中进行处理。为了使所有命令堆叠在一起,我必须使用多态。首先,我尝试使用std :: list。但是第一个问题是:我无法列出抽象类。然后我尝试使用boost :: ptr_list,但是存在第二个问题:在第一个线程中创建的类在过程结束时消失,而创建它们的过程却消失了。因此,指针变为非法。问题:我应该使用哪种实现?看来我必须存储派生类的每个副本。但是哪里?
没有找到相关结果
已邀请:
2 个回复
扭湘阀柿蹄
钨蜡唤喉晤
然后我尝试使用boost :: ptr_list,但是存在第二个问题:在第一个线程中创建的类在过程结束时消失,而创建它们的过程却消失了。因此,指针变为非法。 您是说新命令是在第一个线程的堆栈上创建的吗?不要这样做-第一个线程不知道第二个线程何时完成了对命令的处理,因此第一个线程不应该定义它们何时结束。只需让第一个线程使用
分配对象即可。 话虽如此,您的用例听起来像是生产者-消费者问题的经典示例。考虑查看有关此内容的Wikipedia页面,以获取有关如何正确实施此类系统的一些启发(很难将其理解为错误)。