我正在尝试使用模板类实现指向实现模式的指针,并且为了制作独立的类及其实现,我使用了下一种方法:
template<typename T>
struct __A_impl;
template<typename T>
struct A
{
using __impl_t = __A_impl<T>;
A(__impl_t* t);
__impl_t* _t;
};
template<typename T>
struct B
{
T _t;
};
template<typename T>
using __A_impl = B<T>;
使用这种形式,如果我想更改“B”的名称,这不会以任何方式影响 A 的定义。但是,我收到 gcc 的下一个错误:
test.cpp:21:22: error: declaration of template 'template<class T> using __A_impl = B<T>'
test.cpp:2:7: error: conflicts with previous declaration 'template<class T> class __A_impl'
test.cpp:21:22: error: redeclaration of 'template<class T> using __A_impl = B<T>'
test.cpp:2:7: note: previous declaration 'template<class T> class __A_impl'
我怎样才能做到这一点?因为使用typedef
声明符是不可能的。