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

Преобразование из одного класса в другой - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести на экран слова, в которых каждая буква слова входит не менее двух раз http://www.cyberforum.ru/cpp-beginners/thread1680984.html
Дана последовательность, которая должна вмещать от 2 до 50 слов, в каждом слове от 2 до 8 символом. Написать программу, которая будет выводить на экран слова, в которые каждая буква этого слова входит не менее 2х раз. То есть, при вводе слов: мама папа рак коралл должно вывести: мама папа. Можно не всю программу, а просто отрезок, где оно будет проверять на вхождение символов не менее 2х...
C++ Программа не заканчивает работу Программа нечего не выдает и не заканчивает работу#include <iostream> #include <cstdlib> #include <ctime> #include <string> using namespace std; class Generator{ public: int randomnum(int input){ http://www.cyberforum.ru/cpp-beginners/thread1680983.html
C++ Компилировать и объяснить код, получающий двоичный дамп программы
Нашёл в книжке таких 2 примера: #include <cstring> #include <iostream> #define legal_psw "my.good.password" int main() { char user_psw;
Иероглифы вместо русских букв C++
Здравствуйте, есть программа которая читает с блокнота строку и копирует ее в буфер обмена. Проблема в том, что стоит русская раскладка клавиатуры то все нормально, но если включить анг раскладку сразу в буфер копируются иероглифы а не строка, как это можно исправить ? Добавлено через 45 минут аппп
C++ что не так Void func http://www.cyberforum.ru/cpp-beginners/thread1680964.html
Строковые литералы типа const char Строковые литералы теперь имеют тип const char и размещаются в области памяти, предназначенной только для чтения. Изменение этой памяти теперь будет вызывать нарушение прав доступа. Код, скомпилированный в предыдущих версиях с использованием параметра /GF, также будет вызывать нарушение прав доступа. Код из следующего примера успешно компилируется и...
C++ Посоветуйте хорошую книгу по c++ с задачами Посоветуйте хорошую книгу по c++ с задачами, и подскажите какие темы нужно знать junior'у чтобы устроиться на работу, смотрел вакансии в Москве но требования там просто нереальные, может посмотреть на другой яп? Хотел бы заниматься разработкой декстоп приложений. подробнее

Показать сообщение отдельно
meJevin
154 / 146 / 57
Регистрация: 18.11.2015
Сообщений: 627
Завершенные тесты: 1

Преобразование из одного класса в другой - C++

09.03.2016, 21:14. Просмотров 185. Ответов 7
Метки (Все метки)

Привет, есть два класса RUSmoney и USmoney. Там я сделал конвертирование из RUSmoney в USmoney и наоборот (строки 41 и 75)
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <limits>
 
template<typename Type>
void cinNum(Type& var, char* text) {
 
    int intLimit = std::numeric_limits<int>::max();
 
    std::cout << text;
    while (!(std::cin >> var) || (std::cin.peek() != '\n')) {
        std::cin.clear();
        std::cin.ignore(intLimit, '\n');
        std::cout << text;
    }
 
}
 
class RUSmoney {
private:
    unsigned int rubles;
    unsigned int kopeks;
 
public:
    RUSmoney(unsigned int rubles = 0, unsigned int kopeks = 0) {
        if (kopeks < 0)
            kopeks = 0;
        if (rubles < 0)
            rubles = 0;
 
        this->rubles = rubles;
        this->kopeks = kopeks;
    }
 
    void print() {
        std::cout << "Your RUS money: ";
        std::cout << rubles << " Rubles, " << kopeks << " Kopeks\n\n";
    }
 
    operator USmoney() {
        unsigned int dollars = 0;
        unsigned int cents = (rubles * 1.4) + (kopeks * 0.014);
 
        while (cents >= 100) {
            cents -= 100;
            dollars += 1;
        }
 
        return USmoney(dollars, cents);
    }
};
 
class USmoney {
private:
    unsigned int dollars;
    unsigned int cents;
 
public:
    USmoney(unsigned int dollars = 0, unsigned int cents = 0) {
        if (cents < 0)
            cents = 0;
        if (dollars < 0)
            dollars = 0;
 
        this->dollars = dollars;
        this->cents = cents;
    }
 
    void print() {
        std::cout << "Your US money: ";
        std::cout << dollars << " Dollars, " << cents << " Cents\n\n";
    }
 
    operator RUSmoney() {
        unsigned int rubles = 0;
        unsigned int kopeks = (dollars * 7100) + (cents * 71);
 
        while (kopeks >= 100) {
            kopeks -= 100;
            rubles += 1;
        }
 
        return RUSmoney(rubles, kopeks);
    }
};
 
int main() {
 
    setlocale(LC_ALL, "RUSSIAN");
 
    unsigned int dollars, cents;
    unsigned int rubles, kopeks;
 
    cinNum(dollars, "Enter dollars: ");
    cinNum(cents, "Enter cents: ");
    cinNum(rubles, "Enter rubles: ");
    cinNum(kopeks, "Enter kopeks: ");
 
    USmoney moneyUS(dollars, cents);
    USmoney moneyUS_temp(dollars, cents);
    RUSmoney moneyRUS(rubles, kopeks);
 
    moneyUS.print();
    moneyRUS.print();
 
    std::cout << "US currency converted to RUS currency\n";
    moneyUS = moneyRUS;
    moneyUS.print();
    std::cout << "RUS currency converted to US currency\n";
    moneyRUS = moneyUS_temp;
    moneyRUS.print();
 
    _getch();
    return 0;
}
Но он не работает, пишет, что не знает, что такое USmoney. Я нашел на stack overflow, что можно делать прототипы классов, но при их использовании они должны быть указателями, типа так:
C++
1
2
3
4
5
6
7
8
9
10
11
class Foo;
 
class Bar {
public:
    Foo *myFoo; // This has to be a pointer, thanks for catching this!
};
 
class Foo {
public:
    int value;
};
Я еще не изучал указатели и хочу у вас спросить, как мне заставить эту программу работать без них(желательно)?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru