【发布时间】:2012-07-30 17:59:41
【问题描述】:
有一个类Test:
typedef enum
{
AA, BB
} TType;
template <typename T>
struct TVector
{
typedef std::vector <T> Type;
};
template < typename T, const TType type >
class Test
{
private:
typename TVector <T>::Type it;
};
及其重新定义运算符 = 的特化(没有附加功能):
template < typename T, const TType type >
class Test <T *, type>
{
public:
Test <T *, type > & operator = ( const Test <T*, type > &source ) {return *this;}
template <TType type2>
Test <T *, type > & operator = ( const Test <T*, type2 > &source ){return *this;}
template <TType type2>
Test <T *, type > * operator = ( const Test <T*, type2 > *source ) {return *this;}
};
我正在尝试将具有不同 TType 参数的对象相互分配,并且此步骤可以正常工作。
int _tmain(int argc, _TCHAR* argv[])
{
Test <double *, AA> a1;
Test <double *, BB> b1;
a1=b1; //Correct
Test <double *, AA> *a2;
Test <double *, BB> *b2;
a2 = b2; //Error
return 0;
}
但是用指针同步不行,看错误码:
Error 1 error C2440: '=' : cannot convert from 'Test<T,type> *' to 'Test<T,type> *' 49
是否可以相互分配具有不同 TType 参数的指针(如何?)?
更新问题:
那么指针和对象之间的赋值呢?
a2 = &b1; //Error
*a2 = b1; //Unitialized memory
我可以索要代码示例吗? 感谢您的帮助。
【问题讨论】:
标签: c++ templates pointers assignment-operator