ヘッダー ファイルの名前空間内にクラスがあります。このクラスにはテンプレート型が必要ですが、特定の型のみを使用したいと考えています。以下に例を示します。
ファイル a.hpp
// a.hpp
namespace a_ns {
template<class T>
class a {
// stuff
};
typedef a<double> a_double;
} // end of namespace
// stuff
ファイル b.hpp
// b.hpp
#include <a.hpp>
namespace b_ns {
typedef a_ns::a_double b;
}
ファイル main.cpp
// main.cpp
#include "b.hpp"
int main() {
b_ns::b my_b; // <<<--- I LIKE this!
a_ns::a<float> my_a_which_is_not_allowed; // <<<--- I DO NOT LIKE THIS THOUGH! D:
}
したがって、かなり長い例からわかるように、最終的な目的は、エンド ユーザーが型名としてclass a
withを宣言するfloat
ことを許可せず、によって宣言されているように、特定の型を持つ事前定義されたクラスのみを使用できるようにすることtypedef a<double> a_double;
です。
上記の例ではこれが可能だと思っていましたが、間違っていました。a<float>
上記のように を作成できb.hpp
ますa.hpp
。それで、あなたは問題を見ます!(うまくいけば?)
これが可能であれば、おそらく簡単な解決策があります。