举个例子,我们可以定义:
CList<CPoint,CPoint> a;
CTypePtrList<CPoint,CPoint> a;有什么区别吗?是不是关于type-safe?
如果是,请详细说一下type-safe的内容.

解决方案 »

  1.   

    举个例子:
    CTypedPtrList<CPtrList, CServerSocket*> m_lSock; 
    其中CServerSocket 使自己写的继承自CAsyncSocket 的一个类CServerSocket* sock = new CServerSocket();
    m_lSock.AddTail(sock);   //right, same type
    CAsyncSocket* test = new CAsyncSocket();
    m_lSock.AddTail(test);   //wrong, not same type 
    对于后面一个,在编译时有提示:
    error C2664: 'struct __POSITION *__thiscall CTypedPtrList<class CPtrList,class CServerSocket *>::AddTail(class CServerSocket *)' : cannot convert parameter 1 from 'class CAsyncSocket *' to 'class CServerSocket *'这样就保证了此List中各元素的类型一致性