我想要一个像这样的虚拟课程:
class Configuration
{
public:
enum EPromptId;
virtual CString getPrompt( EPromptId promptId ) = 0;
private:
};
这样每个派生的配置都可以有自己的一组 EPromptIds
class Configuration1 : public Configuration
{
public:
enum EPromptId{
epid_HappyBirthday
};
CString getPrompt( EPromptId promptId ){
return "";
}
private:
};
class Configuration2 : public Configuration
{
public:
enum EPromptId{
epid_JummpingJehoshaphat
};
CString getPrompt( EPromptId promptId ){
return "";
}
private:
};
这会失败,因为每个类都需要使用 Configuration::EPromptId 参数(而不是本代码中的 Configuration1::EPromptId 或 Configuration2::EPromptId)来实现虚函数。
是否可以让基类识别参数类型,但在每个派生类中定义不同的值(可能不使用枚举,但保持强类型,即不使用 int)。
编辑:我想要两个不同的“应用程序”有两种不同的配置。提示可以保存在数据库表中,但每个“应用程序”都有自己的表。指向基本配置类的指针包含在与某些硬件接口的类中(即实际显示的类)。硬件是一个 io 设备,可用于请求和接收用户输入。创建硬件类时,它将传递一个指向正确配置类的指针,因此在请求时显示正确的提示。