Ошибка C2512: нет подходящего конструктора по умолчанию

Я получаю эту досадную ошибку, и я не знаю, почему = (! Это вопрос, я решил это, но у меня проблема с конструктором.

Напишите программу, которая определяет класс Circle, который включает в себя радиус (тип double) в качестве элементов данных. Предоставить набор и функцию get для этого элемента данных. Убедитесь, что введенное пользователем значение действительный и правильный (больше нуля).
     Включить члены функции: член a.function, который вычисляет и возвращает Диаметр члена b.fb круга, который вычисляет и return Окружность члена c.function круга, который вычисляет и return Площадь круга d.function member, отображающий все информация о круге e.constructor, который инициализирует данные член. Если радиус недействителен (т.е. Меньше нуля), установите его в нуль.

ошибка, с которой я сталкиваюсь:

ошибка C2512: "Круг": нет подходящего конструктора по умолчанию

это мой код:

    #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;
        }

Ответы

Ответ 1

Эта строка вызывает конструктор без аргументов (известный как конструктор по умолчанию):

Circle C;

Единственный конструктор, который вы определили:

Circle(double);

Надеюсь, это должно указывать на вас в правильном направлении.

Ответ 2

Конструктор по умолчанию - один без каких-либо параметров. Обычно он предоставляется вам. Но если вы явно определяете какой-либо другой конструктор, то это не так. Поэтому вы должны сами определить его или не использовать. Вы используете его при создании объекта в основном, например:

Circle C;

Итак, либо определите конструктор по умолчанию, либо не используйте его.

Ответ 3

Хорошо, тогда добавьте один:)

Circle() : radius(0.0) {}

Ответ 4

Вы должны определить конструктор без параметров, называемых конструктором по умолчанию. Вы можете инициализировать связанные члены с значениями по умолчанию.

Circle::Circle()
   {
   radius = 0.0
   }