错误C2512:没有适当的默认构造函数可用

时间:2011-12-31 16:53:16

标签: c++ class constructor

我收到这个恼人的错误,我不知道为什么=(! 这是问题,我解决了它,但我遇到了构造函数的问题。

  

编写一个程序,定义一个名为Circle的类,其中包含radius(double类型)作为数据成员。提供set和get函数   对于此数据成员。确保用户输入的值是   有效和正确(大于零)        包括函数成员:a。计算和返回圆的直径的函数成员b。计算的函数成员和   返回计算和的圆c.function成员的周长   返回显示全部的圆圈d.function成员的区域   初始化数据的圆圈e.constructor的信息   会员。如果半径无效(即小于零),则将其设置为   零。

我面临的错误:

  

错误C2512:'Circle':没有合适的默认构造函数

这是我的代码:

    #include <iostream>

    using namespace std;

    class Circle
        {
            public:

            Circle(double);
            void setRadius(double);
            double getRadius();
            void Display();
            double Diameter(double);
            double Circumference(double);
            double Area(double);

            private:

            double radius;

        };

        Circle::Circle(double radio)
            {
                setRadius(radio);
            }

        void    Circle::setRadius(double ra)
            {
                if (ra < 0)
                {
                    radius = 0;
                }
                else
                    radius = ra;
            }

        double  Circle::getRadius()
            {

                double rado;

            cout << "Enter the Radius:\n";
            cin >> rado;
            setRadius(rado);

            return radius;
            }

        double  Circle::Diameter(double rad)
            {
                return 2*rad;
            }

        double  Circle::Area(double radi)
            {
                return 3.14 * radi * radi;
            }


        double  Circle::Circumference(double radiu)
            {
                return 2 * 3.14 * radiu;
            }

        void Circle::Display()
        {   
            cout << "The Radius of the circle is: \n";
            cout << radius;
            cout << "\nThe Diameter of the circle is: \n";
            cout << Diameter(radius);
            cout << "\nThe Circumference of the circle is: \n";
            cout << Circumference(radius);
            cout << "\nThe Area of the circle is: \n";
            cout << Area(radius);
            cout << endl;
        }

        int main()
        {
            Circle C;
            C.getRadius();
            C.Display();

            return 0;
        }

4 个答案:

答案 0 :(得分:15)

该行调用不带参数的构造函数(称为默认构造函数):

Circle C;

您定义的唯一构造函数是:

Circle(double);

希望这应该指向正确的方向。

答案 1 :(得分:5)

默认构造函数是没有任何参数的构造函数。通常,它是为您提供的。但是,如果你明确定义任何其他构造函数,那么它不是。所以你必须自己定义,或不使用它。在main中创建对象时使用它,如下所示:

Circle C;

因此,要么定义默认构造函数,要么不使用它。

答案 2 :(得分:3)

好吧,然后添加一个:)

Circle() : radius(0.0) {}

答案 3 :(得分:0)

您应该定义一个没有名为default constructor的参数的构造函数。您可以将相关成员初始化为默认值。

Circle::Circle()
   {
   radius = 0.0
   }
相关问题