Форум программистов, компьютерный форум CyberForum.ru

Преобразования объектов классов в объекты других классов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ (STL LIST SORT) Сортировка по некольким критериям http://www.cyberforum.ru/cpp-beginners/thread44382.html
Здравствуйте! Столкнулся с такой проблемой при сортировке списка. %-) Есть структура: struct PackObject { bool Placed; // Помещен ли на карту текстур string SceneAlias; // Имя сцены
C++ MySQL и C++ Здравствуйте! Извените пожалуйста за может быть несколько по дилетантски поставленный вопрос но может кто подскажет как связать MySQL и C++ ну что бы считать оттуда данные!! http://www.cyberforum.ru/cpp-beginners/thread44374.html
C++ Среднее арифметическое
Ситуация такая. В данной программе я нахожу среднее арифметическое стольки чисел, скольких введу. Проблемма в том, что при вводе одного числа, чтоб ввести другое, мне нужно, ввести "yes",если я введу один символ, программа продолжит работу далее, но если ввести одновременно несколько, произойдёт зацикливание, не подскажите как убраться из этого зацикливания. Как сделать так,чтоб была возможность...
проблемы с русским языком C++
помогите пожалуйста как подключить заголовочный фаил русского языка или что там надо зделать ? :help:
C++ Счет чисел в массиве http://www.cyberforum.ru/cpp-beginners/thread44292.html
Здравствуйте! Мой счетчик что то не работает. const int size=255; char c; int k, i, j, count; count=0; cout << "Enter text:\n"; cin.getline(c, size);
C++ Использование метода getche() system("pause"); return 0; } подробнее

Показать сообщение отдельно
Monte-Cristo
 Аватар для Monte-Cristo
2807 / 1372 / 30
Регистрация: 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()ound(0),shilling(0),pence(0)//конструктор без аргументов
{};
sterling(long p,int s,int pe)ound(p),shilling(s),pence(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;
}


в таком случае, объяви оператор в классе, а определи вне класса.
 
Текущее время: 13:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru