Ответ 1
Эта строка вызывает конструктор без аргументов (известный как конструктор по умолчанию):
Circle C;
Единственный конструктор, который вы определили:
Circle(double);
Надеюсь, это должно указывать на вас в правильном направлении.
Я получаю эту досадную ошибку, и я не знаю, почему = (! Это вопрос, я решил это, но у меня проблема с конструктором.
Напишите программу, которая определяет класс 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;
}
Эта строка вызывает конструктор без аргументов (известный как конструктор по умолчанию):
Circle C;
Единственный конструктор, который вы определили:
Circle(double);
Надеюсь, это должно указывать на вас в правильном направлении.
Конструктор по умолчанию - один без каких-либо параметров. Обычно он предоставляется вам. Но если вы явно определяете какой-либо другой конструктор, то это не так. Поэтому вы должны сами определить его или не использовать. Вы используете его при создании объекта в основном, например:
Circle C;
Итак, либо определите конструктор по умолчанию, либо не используйте его.
Хорошо, тогда добавьте один:)
Circle() : radius(0.0) {}
Вы должны определить конструктор без параметров, называемых конструктором по умолчанию. Вы можете инициализировать связанные члены с значениями по умолчанию.
Circle::Circle()
{
radius = 0.0
}