Dostaję ten przykry błąd i nie wiem dlaczego = ( To jest pytanie, mam rozwiązać go, ale mam problem z konstruktoraerror C2512: brak stosownych dostępny konstruktor domyślny
!.Napisz program, który definiuje klasę o nazwie Kółko, która zawiera promień (typ podwójny) jako elementy danych.Przyprowadź zestaw i funkcję Pobierz dla tego elementu danych. Sprawdź, czy wprowadzona przez użytkownika wartość jest poprawna i poprawna (większa wartość: (większa niż zero)
Zawierają elementy funkcji: a.function member, który oblicza i zwraca średnicę okręgu b.function member, który jest obliczany i return Obwód okręgu c.function element, który jest obliczany i return Obszar elementu d.fokręgu, który wyświetla wszystkie informacje o kręgu e.constructor, który inicjuje element danych. Jeśli promień jest nieważny (to jest mniej niż zero) ustaw go na zero.
błąd Jestem stoi:
błędu C2512: 'Krąg': brak odpowiedniego konstruktora domyślnego dostępne
to mój kod:
#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;
}
Myślę, że źle zrozumiałeś, jak powinny wyglądać funkcje członka. Twój kod nie jest zgodny ze stylem obiektowym. Na przykład, nie mogę uzyskać obszaru okręgu "C", wywołując 'C.Area()'. Powinieneś to naprawić. Czy istnieje jakiś szczególny powód, dla którego wszystkie twoje argumenty mają różne nazwy, nawet myślę, że * wszystkie * odnoszą się do promienia? Nie rób tego, bądź konsekwentny. –
Twój konstruktor próbuje użyć funkcji składowej, ponieważ musi już istnieć obiekt, więc konstruktor musi wcześniej zakończyć. Powinieneś zainicjować zmienne składowe używając konstruktora swojego typu przed wejściem do treści konstruktora. –