0

内部に型を定義するクラス テンプレートがあります。

#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ます。何が起こっていますか?

4

2 に答える 2

2

ここで使用する必要がありtypenameます:

typename F::FArray a = typename F::Array();
于 2013-09-04T11:06:38.017 に答える