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;
}
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
Vous devez vous connecter pour publier un commentaire.
Cette ligne appelle un constructeur sans arguments (connu sous le nom de constructeur par défaut):
Le seul constructeur que vous avez définie est:
J'espère que cela doit vous diriger dans la bonne direction.
OriginalL'auteur hmjd
Un constructeur par défaut est l'une sans paramètres. Normalement, il vous est fourni. Mais si vous l'avez explicitement définir n'importe quel autre constructeur, alors qu'il ne l'est pas. Donc, vous devez définir vous-même, ou ne pas l'utiliser. Vous l'utilisez lorsque vous créez un objet dans la main, comme ceci:
Donc, soit définir un constructeur par défaut, ou ne l'utilisez pas.
Mais c'est une mauvaise solution. Pense: est-il judicieux d'avoir un cercle de rayon? Pas de. Votre classe ne devrait pas définir un constructeur par défaut.
OriginalL'auteur Benjamin Lindley
Bien, puis ajouter un 🙂
OriginalL'auteur marcinj
Vous devez définir un constructeur sans paramètres par défaut du constructeur. Vous pouvez initialiser les membres associés, les valeurs par défaut.
OriginalL'auteur Rabia