私はこのような仮想クラスたい:各派生した構成は、各クラスがimplmentする必要があるので、これが失敗した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:
};
の独自のセットを持つことができるように
class Configuration
{
public:
enum EPromptId;
virtual CString getPrompt(EPromptId promptId) = 0;
private:
};
をConfiguration :: EPromptIdパラメータを持つ仮想関数(このコードのようにConfiguration1 :: EPromptIdまたはConfiguration2 :: EPromptIdではなく)。
基本クラスにパラメータ型を認識させることはできますが、派生クラスごとに異なる値を定義することは可能ですか(enumを使用せず、int型を使用しない強く型付けしたままにしておくなど)。
EDIT:2つの異なる「アプリケーション」に対して2つの異なる構成が必要です。プロンプトはdbテーブルに保持できますが、各アプリケーションはそれ自身のテーブルを持ちます。基本構成クラスへのポインタは、あるハードウェアとインターフェースするクラス(実際の表示を行うクラス)に含まれています。ハードウェアは、ユーザー入力を要求および受信するために使用できるI/Oデバイスです。ハードウェアクラスが作成されると、正しい構成クラスへのポインタが渡され、要求されたときに適切なプロンプトが表示されます。
これは 'enum'する必要もありません....とにかく合格するかを知るために自分のタイプを知っておく必要があるだろうから? 'const int'もOKでしょうか? – sbi
列挙型にする必要があります。 – Patrick