C++ 如何使派生类定义数据结构
我正在写一个解谜程序 每种类型的拼图都继承自拼图类(虚拟) 像这样 类跳转:拼图 拼图解算器(使用模板编写)尝试拼图的每一个步骤,以及那些 一直尝试直到得到答案 但每个谜题都有不同的“步骤”数据结构C++ 如何使派生类定义数据结构,c++,templates,inheritance,C++,Templates,Inheritance,我正在写一个解谜程序 每种类型的拼图都继承自拼图类(虚拟) 像这样 类跳转:拼图 拼图解算器(使用模板编写)尝试拼图的每一个步骤,以及那些 一直尝试直到得到答案 但每个谜题都有不同的“步骤”数据结构 如何在puzzle(虚拟类)中使用“state”,以便其所有派生类都在其中定义单独的“step”数据结构?创建一个状态类,该状态类具有基本puzzle类所需的接口。例如,您需要能够复制状态 class state { public: virtual state *copy() = 0;
如何在puzzle(虚拟类)中使用“state”,以便其所有派生类都在其中定义单独的“step”数据结构?创建一个状态类,该状态类具有基本puzzle类所需的接口。例如,您需要能够复制状态
class state {
public:
virtual state *copy() = 0;
virtual ~state();
};
然后创建一个抽象方法来构造puzzle类中的状态
class puzzle {
virtual state *initial_state(void) = 0;
virtual step(void) = 0;
})
在特定类型的谜题的特定谜题类中,为该类型的谜题定义一个新的状态类,并创建将返回该类型状态并可从基类调用的方法。您可能还需要迭代器来了解下一步可能的步骤,并了解您的解决方案有多好/接近。“抽象方法”——您是指纯虚拟成员函数吗?@Jeffrey Yes;纯虚拟成员函数也许更清楚一些,尽管我认为抽象在通用面向对象术语中是足够常见的,在谈论C++时它是合理的。但重点更在于在状态类中定义状态和谜题类之间的接口,而状态类对于直接实例化可能没有用处,并且可能具有纯虚拟成员函数。