erreur C2512: il n'y a pas de constructeur par défaut disponible

Je suis arriver à cette fâcheuse erreur et je ne sais pas pourquoi =( !
C'est la question , je l'ai résolu, mais j'ai un problème avec le constructeur.

Écrire un programme qui définit une classe appelée Cercle qui comprend rayon (de type double) en tant que membres de données. Fournir un ensemble et d'une fonction get
pour ce membre de données. S'assurer que la valeur entrée par l'utilisateur est
valide et correcte (supérieure à zéro).
Inclure les membres de fonction: une.la fonction de membre qui calcule et retourne le Diamètre du cercle b.la fonction de membre de calcul et de
de retour de la Circonférence du cercle c.la fonction de membre de calcul et de
de retour de la Zone du cercle d.la fonction de membre que l'Affichage de toutes les
l'information du cercle e.constructeur qui initialise les données
membre. Si le rayon n'est pas valide (c'est à dire moins que zéro) à
zéro.

l'erreur, je suis confronté :

erreur C2512: "Cercle": il n'y a pas de constructeur par défaut disponible

c'est mon code :

    #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;
        }
Je pense que vous avez mal compris la façon dont les fonctions de membre devrait ressembler. Votre code ne suit pas particulièrement orientée objet style. Par exemple, je ne peux pas obtenir la zone de cercle C en appelant C.Area(). Vous devez résoudre ce problème. Aussi, est-il une raison particulière pour que tous vos arguments ont des noms différents, même s'ils tous, reportez-vous au rayon? Ne le faites pas, être cohérent.
Votre constructeur essaie d'utiliser une fonction membre, pour cela, il faut déjà être un objet, de sorte qu'un constructeur doit avoir terminé avant. Vous devez les initialiser les variables de membre à l'aide d'un constructeur de type, avant d'entrer dans le corps du constructeur.

OriginalL'auteur user1092492 | 2011-12-31