当我在自建的COneAxis类中声明:COneAxis message[40],怎么会出现这个错误?error C2512: 'COneAxis' : no appropriate default constructor available

解决方案 »

  1.   


       就是没有默认构造函数了。   生成的对象数组的话,该类必须有默认构造函数。   要不你就用指针一个一个的NEW吧。
      

  2.   

    to SeekTruth(鹤舞白沙) :"生成的对象数组的话,该类必须有默认构造函数。" c++ 有这个规定吗?好像没有吧?class B
    {
    private:
    char* pCh;
    };int main(int argc, char* argv[])
    {
    B b[20]; b[0].pCh = new char[20];
    return 0;
    }
    编译通过!
      

  3.   

    哦,copy错了
    private ==> public
      

  4.   

    楼上的:
    你的B类是有默认构造函数的.改成以下才是没有默认构造函数
    class B
    {
    pubblic:
    char* pCh;
          B(char* str){ pch=new char[100];printf(pCh,str);}
    };再用你的main()就是出错了.
      

  5.   

    啊?是谁说的"必须"?唔....这个嘛?......是错的.应是"生成对象数组的话,该类不一定要有默认构造函数"拿前面的例子来说:
    class B
    {
    pubblic:
    char* pCh;
          B(char* str){ pch=new char[100];printf(pCh,str);}
    };如果用
    void main()
    {
        B array[3];
    }
    则会出错.但是可以使用
    void main()
    {
       B array[3]={B("first"),B("second"),B("third")};
    }不过在本例情况下由于没有提供copy constructor,是极易出RUN-TIME错误的.
      

  6.   

    to Zark(金陵五月) :
       你举的这个例子和楼主的问题可以说是差不多,
    "
    如果用
    void main()
    {
        B array[3];
    }
    则会出错.
    "错的原因是因为B没有缺省构造函数(B array[3];这里会调用缺省构造函数),因为你定义了一个带参数的构造函数,所以编译器不会再为B生成一个无参数的缺省构造函数。如果你加上一个就不会出错了。关于构造函数你可以看看《深度探索c++对象模型》