【发布时间】:2017-12-09 14:54:02
【问题描述】:
对于一个学校项目,我们必须制作一个“游戏”,在这个游戏中,我们想象一个迷宫并找到我们的出路。这种可视化必须以两种不同的方式实现,在我们的例子中是基于文本的可视化和更奇特的方式。
为此我们必须使用 Qt,我们正在使用一个 QMainWindow,其中有一个 QWidget,这个小部件将是一个或另一个可视化。看到在游戏过程中我们应该可以在可视化之间切换,我们使用了策略模式,所以做了一个界面(ViewInterface),两个可视化都实现了这个。除了实现 ViewInterface 之外,两个可视化都继承了另一个类,在基于文本的情况下这是 QPlainTextEdit(有一个带有文本的 QWidget),而在 Fancy 中这是 QDialog。这里的问题是,在我的控制器中,我有一个指向 ViewInterface 的指针,该指针用于填充 QWidet 但要执行此 ViewInterface 还必须从 QWidget 继承,这会导致此错误:QObject is an ambiguous base of 'TerminalView'。
由于在玩游戏时可以在视图之间切换,并且只能在当前活动的视图上调用更新,因此我们不能将特定视图传递给“setWidget”。
我做错了什么或者我该如何解决这个问题? (我已经考虑过了,但无法提供解决方案)。
【问题讨论】:
标签: c++ qt strategy-pattern ambiguous