我从CAsyncSocket派生了一个类,为什么用作CArray和CList的成员元素,编译都通不过呢?而用CString或是int做成员就能通过,编译错误为syntax error : missing ';' before '<'
e:\waterserver\waterserver.h(30) : error C2501: 'CArray' : missing storage-class or type specifiers

解决方案 »

  1.   

    楼主, 提示已经很清楚了, CArray中的type没定义!
    一般是派生CAsyncSocket类的头文件没被包含, 还有呀自己写的类最好重载赋值与拷贝构造函数,这样放进array和list安全性才高;
    当然最好是保存类对象的指针!
      

  2.   

    我加了头文件通过了,但是在Add时显示cannot convert parameter 1 from 'class CAcceptSocket' to 'class CAcceptSocket',是不是只能保存类的指针啊??
      

  3.   

    CArray是模板类,需要#include <afxtempl.h>
    同时,对于复杂类型,比如你这里的类对象,必须有自己的拷贝构造函数,才能用CArray。如果需要用到GetAt之类的函数,还要重载=操作符才行。
      

  4.   

    CArray<CAsyncSocket*, CAsyncSocket*> m_pSocketList;
    或者使用
    CPtrList m_pSocketList;
    都可以存放CAsyncSocket 对象