这是我的代码。我如何制作A::type
beint
或double
其他用于制作 class 实例的方法B
?
template<class X>
class A
{
typedef "*****" type
........
.....
......
}
template<class Y>
class B
{
......
.......
....
}
int main()
{
B<int> x;
A<B<int> > y;
.....
....
....
}
这是我的代码。我如何制作A::type
beint
或double
其他用于制作 class 实例的方法B
?
template<class X>
class A
{
typedef "*****" type
........
.....
......
}
template<class Y>
class B
{
......
.......
....
}
int main()
{
B<int> x;
A<B<int> > y;
.....
....
....
}
这样就可以了。
template<class X>
class A
{
typedef typename X::type type;
};
template<class Y>
class B
{
public:
typedef Y type;
};
或许是这样的:
template <typename T>
struct B
{
typedef T type;
// ...
};
template <typename> struct A { /* ... */ };
typedef B<int> MyB;
int main()
{
MyB x;
A<MyB::type> y;
}
也许这会有所帮助。
template <class T>
class B;
template <class T>
class A {
public:
typedef T type;
};
template <class T>
class A<B<T>> : public A<T> {};
template <class T> class B {};
int main()
{
A<B<int>>::type x;
}