内部に型を定義するクラス テンプレートがあります。
#include <boost/array.hpp>
template <typename T, int N>
class MyFunct {
public:
typedef boost::array<T,N> FArray;
MyFunct();
};
これで、別のクラス テンプレートができました。このクラスを特別なものにしているのは、内部で と呼ばれる型を定義する型でのみ機能することになっていることですFArray
。理由は聞かないでください、これには理由があります。
template <typename F>
class MyClass {
public:
MyClass() {
F::FArray a = F::FArray();
}
};
そして、私はこれを使用します:
int main(int argc, char** argv) {
MyClass< MyFunct<double,10> > m;
}
double
このような状況になると、コンパイラは、 というメンバーがないと言って怒ってしまいFArray
ます。何が起こっていますか?