次のようなテンプレートクラスを指定します。
template<typename Type, typename IDType=typename Type::IDType>
class Mappings
{
public:
...
Type valueFor(const IDType& id) { // return value }
...
};
ヘッダーファイルでこのクラスを誰かがどのように宣言できますか?
これはあなたがそれをする方法です:
template<typename Type, typename IDType=typename Type::IDType>
class Mappings;
template<typename Type, typename IDType>
class Mappings
{
public:
...
Type valueFor(const IDType& id) { // return value }
...
};
デフォルトは、実際の定義ではなく、前方宣言にあります。
テンプレートの最初の宣言に対してのみ、テンプレートのデフォルト引数を宣言できます。ユーザーにクラステンプレートの転送宣言を許可する場合は、転送ヘッダーを提供する必要があります。デフォルトを使用して他の人のクラステンプレートを前方宣言したい場合は、運が悪いです!