この質問では、OP は C++ では不可能なテンプレート typedef の解決策を求めました。OPも解決策を提示しましたが、気に入らなかった:
template<size_t N, size_t M>
class Matrix {
// ....
};
// Problem - will not compile
typedef Matrix<N,1> Vector<N>;
// Solution
template <int N>
class Vector: public Matrix<N,1>
{ };
Helper::type
私の質問は、OPのソリューションよりもこのソリューションがどのような利点をもたらすかです(これらのクラスがベースポインターによって使用されることを意図したものではない、またはnew
そのようなものであると仮定すると)? 空のクラスは、リリース時にオーバーヘッドを持ちません (またはそうしますか?)。私が見ることができる唯一の欠点は、デバッグ ビルドでは、デバッグ時に基本クラスを展開する必要があることです。
編集:選択した回答に加えて、継承されたバージョンではコンストラクターを定義する必要があることを示唆した@Daniの回答を参照してください。これは不便です。