![]() 829 / 353 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
|||||||||||
Преобразования объектов классов в объекты других классов19.07.2009, 00:25. Показов 6469. Ответов 9
Метки нет Все метки)
(
Задача типа обмен валют. Нужно конвертировать старый фунт стерлинг(фунт, шиллинг и пенсы) в доллары и обратно, по курсу 1 фунт = 50 долларов. Каждая валюта - разный класс. Конвертирование нужно реализовать в преобразовании типов.
Вот мой код
Вот ошибки
Помогите сей бред превратить в работающий. P.S.сильно не пинайте.
0
|
19.07.2009, 00:25 | |
Ответы с готовыми решениями:
9
Разработать иерархию классов, демонстрирующее работу с коллекцией объектов разных классов |
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
19.07.2009, 00:39 | |
Как у тебя будет виден класс BMoney, в классе sterling, если он объявлен после него? Либо включай двойно проход, либо объявляй в области видимости.
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
19.07.2009, 00:52 | |
У тебя BMoney объявлен после Sterling. Поэтому в Sterling твой класс BMoney не виден. Это как использование переменной до ее объявления. Ну это, для начала, одна из ошибок )
1
|
![]() 829 / 353 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
|||||||||||
19.07.2009, 01:03 [ТС] | |||||||||||
Monte-Cristo, теперь
такое
P.S. Я тупо добавил,ничего не меняя
0
|
![]() 2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
|
19.07.2009, 01:14 | |
видимо добавление class BMoney; не всегда помогает.
вот рабочий (вроде) листинг.. по крайней мере компилиуертся. листинг
#include <iostream>
using namespace std; ////////////////////////////////////////////////////////////////////////// class BMoney; class sterling; class sterling{//фунты стерлингы private: long pound; //фунты int shilling; // шиллингы int pence; // пенсы public: sterling() ![]() {}; sterling(long p,int s,int pe) ![]() {}; sterling(double bp)//конструктор с одним аргуметом типа double(грубо говоря, из double в sterling { pound = (long)bp;//целая часть присваивается фунтам shilling = (int)((bp - pound)*20);//цела часть от умножения остатка на 20(1 фунт = 20 шиллингов) pence = (int)((bp - pound)*240 - shilling*12);//находим общее количество пенсов(остаток умножить на 240) // и вычитаем количество шиллингов(1 шиллинг = 12 пенс) } void getSterling()//получение от пользователя данных { cout << "Введите количество фунтов, шиллинго и пенсов(x.y.z): "; wcin >> pound >> shilling >> pence; _flushall(); } void putSterling()//вывод значения { char ch = 'Ь'; cout << ch << pound << "." << shilling << "." << pence << endl; } sterling operator+ (sterling s2)const//сумма { return sterling(double(sterling(pound,shilling, pence)) + double(s2)); } sterling operator- (sterling s2)const//разность { return sterling(double(sterling(pound,shilling, pence)) - double(s2)); } sterling operator* (double temp)const//произведение на число { return sterling(double(sterling(pound,shilling, pence)) * temp); } sterling operator/ (sterling s2)const//деление { return sterling(double(sterling(pound,shilling, pence)) / double(s2)); } sterling operator/ (double temp)const//деление на число { return sterling(double(sterling(pound,shilling, pence)) / temp); } operator double ()const//преобразование в тип double { double temp = (double)(pound + (double)(shilling + (double)pence/12)/20); return temp; } operator BMoney ()const;//преобразование в доллары }; ////////////////////////////////////////////////////////////////////////// class BMoney{//доллар private: double money;//значение public: BMoney():money(0)//конструктор без аргумента {}; BMoney(double d):money(d)//конструктор с одним аргументом {}; void getMoney()//ввод данных { cout << "Введите количество денег: "; wcin >> money; _flushall(); } void putMoney()//вывод { cout << money << endl; } BMoney operator+ (BMoney m2)const//сложение { return BMoney(money + m2.money); } BMoney operator- (BMoney m2)const//вычитание { return BMoney(money - m2.money); } BMoney operator* (double d2)const//умножение на число { return BMoney(money*d2); } BMoney operator/ (BMoney m2)const//деление { return BMoney(money/m2.money); } BMoney operator/ (double d2)const//деление на число { return BMoney(money/d2); } operator sterling()const//преобразование в фунты { return sterling(money/50); } }; sterling::operator BMoney ()const//преобразование в доллары { return BMoney((double)((pound + (double)((shilling + (double)(pence/12))/20)*50) )); } ////////////////////////////////////////////////////////////////////////// int main(int argc, char* argv[]) { setlocale(0,""); sterling s1, s2(7,17,9), s3(10.52); BMoney m1, m2(600.56); s1.getSterling(); cout << "s1 = "; s1.putSterling(); cout << endl; cout << "s2 = "; s2.putSterling(); cout << endl; cout << "s3 = "; s3.putSterling(); cout << endl; m1.getMoney(); cout << "m1 = "; m1.putMoney(); cout << "m2 = "; m2.putMoney(); getchar(); return 0; } в таком случае, объяви оператор в классе, а определи вне класса.
1
|
![]() 2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
|
19.07.2009, 12:40 | |
Search.., это задача из книги Р.Лафоре "Объектно-ориентированное программированиев C++". Наследование будет изучаться в следующей главе.
![]() Стерлинг и доллар не очень-то и походи) так что создание двух разных классов это типичный случай. ![]()
0
|
19.07.2009, 12:40 | |
Помогаю со студенческими работами здесь
10
Файлы и объекты производных классов Объекты различных классов в списке Где создавать объекты классов? Использование классов в С++. Простые объекты. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
|
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
|
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
|
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
|
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
|
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
|
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
|
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C#
Задание 1:
КЛАСС FORM 1
public partial class Form1 : Form
{
Spisok listin = new Spisok();
. . .
|
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
|
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
|