1

这是我的代码。我如何制作A::typebeintdouble其他用于制作 class 实例的方法B

template<class X>
class A
{
typedef "*****" type
........
.....
......
}
template<class Y>
class B
{
......
.......
....
}
int main()
{
B<int> x;
A<B<int> > y;
.....
....
....
}
4

3 回答 3

3

这样就可以了。

template<class X>
class A
{
    typedef typename X::type type;
};

template<class Y>
class B
{
public:
    typedef Y type;
};
于 2013-04-26T00:01:53.540 回答
2

或许是这样的:

template <typename T>
struct B
{
    typedef T type;
    // ...
};

template <typename> struct A { /* ... */ };


typedef B<int> MyB;

int main()
{
    MyB          x;
    A<MyB::type> y;
}
于 2013-04-26T00:09:51.357 回答
2

也许这会有所帮助。

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;
}
于 2013-04-26T00:12:37.370 回答