我自定义了一个类,
class MyClass
{
public:
   int member;
};然后用它定义了一个数组,
CArray<MyClass,MyClass> Mine;在用Mine.Add()编译没法通过,代码如下:
MyClass test;
test.member=4;
Mine.Add(test);请问是怎么回事啊?如何更正?谢谢

解决方案 »

  1.   

    CArray<MyClass,MyClass> Mine;
    应该改为CArray<MyClass,MyClass&> Mine;但是当类中含有数组时还是不行
    换成结构也不行struct MyStruct
    {
     CArray<double,double> w; 
    };CArray<MyStruct,MyStruct&> Mine;
    MyStruct s;
    s.w.Add(1.2);
    s.w.Add(2.3);
    Mine.Add(s);在编译的时候出现错误:
    c:\program files\microsoft visual studio\vc98\mfc\include\afxtempl.h(255) : error C2558: struct 'CMyStruct' : no copy constructor available        c:\program files\microsoft visual studio\vc98\mfc\include\afxtempl.h(1566) : while compiling class-template member function 'struct CMyStruct __thiscall CArray<struct CMyStruct,struct CMyStruct &>::GetAt(int) const'
    Error executing cl.exe.
      

  2.   

    加上构造和析构
    class MyClass
    {
       MyClass();
       ~MyClass();
    public:
       int member;
    };
      

  3.   

    MyClass test;
    test.member=4;
    Mine.Add(test);
    局部变量,会DESTROY的.class MyClass
    {
    public:
       int member;
    };然后用它定义了一个数组,
    CArray<MyClass*,MyClass*> Mine;在用Mine.Add()编译没法通过,代码如下:
    MyClass* test = new MyClass;
    test->member=4;
    Mine.Add(test);