注册 登录
编程论坛 C++教室

C++函数的 对象参数

baihongwu1 发布于 2011-10-12 17:25, 696 次点击
#include <iostream.h>


class INT28
{
public:
    INT28(unsigned x)
    {
        if(x>0xfffffff)
        {
            cout<<"error INT28 initializer! \n";
            data=0;
        }
        data=x;
    }

    int   getbitl(int i)
    {
        if(i<1 || i>28)
        {
            cout<<"\nerror i="<<i<<endl;
            return -1;
        }

        int y=data>>(28-i);
        return y%2;
    }

    void ls()
    {
        int x=getbitl(1);
        data=data<<5;
        data=data>>4;
        data+=x;
    }

    void out()
    {
        for(int i=1;i<=28;i++)
            {
                cout<<getbitl(i);
                if(i%4==0) cout<<endl;
            }

        cout<<"\n\n";
    }

    unsigned data;        //32-4 bit
};


class INT56
{
public:
    INT56(INT28 h, INT28 l)//??INT28????????
    {
        hi=h;lo=l;
    }

    int   getbitl(int i)
    {
        if(i<1 || i>56)
        {
            cout<<"\nerror i="<<i<<endl;
            return -1;
        }
        if(i<=28)
        {
            int y=hi.data>>(28-i);
            return y%2;
        }
        else
        {
            int y=lo.data>>(56-i);
            return y%2;
        }
    }


    void out()
    {
        for(int i=1;i<=56;i++)
            {
                cout<<getbitl(i);
                if(i%4==0) cout<<endl;
            }

        cout<<"\n\n";
    }

    INT28 hi, lo;        //28+28 bit
};

void main()
{

}


以上程序编译后有如下出错信息,该如何解决?

--------------------Configuration: ex - Win32 Debug--------------------
Compiling...
ex.cpp
e:\i\ls\ex.cpp(55) : error C2512: 'INT28' : no appropriate default constructor available
e:\i\ls\ex.cpp(55) : error C2512: 'INT28' : no appropriate default constructor available
Error executing cl.exe.

ex.exe - 2 error(s), 0 warning(s)



1 回复
#2
我是菜鸟哦2011-10-12 18:40
你定义INT28(unsigned x)时候没有给x赋初值
当你实例化类的时候,编译器调用你的构造函数,却不知道x的值,所以无法构造相应的对象。

改成INT28(unsigned x=0)
1