Как преобразовать double в объект класса?
По заданию требуется преобразовать double в объект класса. Почему при компиляции выбивает ошибку Stack Overflow?
#include <iostream>
#include <locale.h>
using namespace std;
class MassDouble
{
private:
double doubleznach;
public:
MassDouble() {
double znach = 1.0;
}
MassDouble(double X) {
static_cast<MassDouble>(X); //Тут ошибка Stack Overflow.
}
};
int main()
{
setlocale(LC_ALL, "");
MassDouble test(2.0);
return 0;
}
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
MassDouble(double X) {
static_cast<MassDouble>(X); //Тут ошибка Stack Overflow.
Конечно - ведь вы пытаетесь вызвать тот же конструктор для приведения типа...
Я, конечно, не знаю, что именно вы хотите, но большое у меня подозрение, что вам надо это
MassDouble() {
double znach = 1.0;
}
MassDouble(double X) {
static_cast<MassDouble>(X); //Тут ошибка Stack Overflow.
}
заменить на
MassDouble(double X = 1.0): doubleznach(X) {}
Автор решения: Serj525
→ Ссылка
- Необходим конструктор вида
MassDouble(double mass)
{
doubleznach = mass;
}
или
MassDouble(double mass) : doubleznach(mass){}
если нужен конструктор с двумя параметрами тогда необходимо чтобы один из двух параметров был по умолчанию, он имеет следующий вид
MassDouble(int mass1, double mass2 = 1.0);
- Для того что бы преобразовать базовый тип в объект класса необходимо
int main()
{
MassDouble myMass;
myMass = 5.2;
}
Более подробно описанно в книге Прата в 11 главе