リソース管理クラスを想定してください。
template<typename AddressFields>
class AddressBook
{
std::list<AddressBookEntry<AddressFields> > book;
};
これは、AddressBookEntryオブジェクトのリストを保持します。AddressBookEntryは基本的に、いくつかのデフォルトのメンバー変数と、テンプレート化されたAddressFieldsによって記述されるカスタマイズ可能なフィールド変数で構成されると想定されています。
template<typename AddressFields>
struct AddressBookEntry
{
int id;
AddressFields fields;
};
次のようないくつかの基本的な構造を提供したいと思います
struct Name
{
std::string n_first;
std::string n_last;
};
struct Address
{
std::string street;
int zip;
std::string city;
};
struct Mobile
{
std::string m_number
};
今私の質問は:既存の構造に基づいて新しい構造を作成する方法はありますか?たとえば、「名前」と「モバイル」を組み合わせて、ユーザーが独自のカスタムAddressFieldsタイプを作成できるようにしたい。
struct NameMobile
{
std::string n_first;
std::string n_last;
std::string m_number;
};
そのため、AddressBookに接続できます。ただし、既存の構造でのみ。