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

Ошибка компиляции (преобразование объекта класса в объект другого класса) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Считывание из файла по словам. http://www.cyberforum.ru/cpp-beginners/thread560013.html
Добрый день! Подскажите, пожалуйста, как считать из файла по словам, чтобы сохранялись пробелы между словами и в строке было не больше 50 символов включая пробелы. Функцию toupper использовал, но что то не получается пока. Получается, только считывать посимвольно, при этом пробелы между словами не сохраняться. Заранее спасибо за помощь. #include <iostream> #include <conio.h>...
C++ Сумма элементов главной диагонали Матрица 3 на 3, сосчитать сумму элементов главной диагонали http://www.cyberforum.ru/cpp-beginners/thread560004.html
C++ Крестики нолики
Здравствуйте. Никак не получается определить, кто победил, всегда выводит ничью. Почему? #include <iostream> #include <conio.h> using namespace std; char board = {'-', '-', '-', '-', '-', '-', '-', '-', '-'}; void print_board(){ cout <<"-"<<board<<"-|-"<<board<<"-|-"<<board<<"-"<<endl;
Массив: Сосчитать сумму всех элементов массива C++
Сосчитать сумму всех элементов массива
C++ Массив: элементы не главной диагонали изменить на противоположные знаки. http://www.cyberforum.ru/cpp-beginners/thread559967.html
Матрица 3 на 3, элементы не главной диагонали изменить на противоположные знаки.
C++ Полиморфный конструктор [C++] Добрый день форумчане! Помогите разобраться, что такое полиморфный конструктор. На рсдн нашел про класс(в себе должен содержать виртуальную функцию\метод\конструктор\деструктор). Случаем конструктор не будет объявляться как виртуальный метод? Тоесть class A { public: int c,b; virtual A(int c,int b){ this-> c=c; подробнее

Показать сообщение отдельно
daite_dve
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 37
27.04.2012, 13:52  [ТС]     Ошибка компиляции (преобразование объекта класса в объект другого класса)
Спасибо amfisat! Все заработало!

А теперь для тех кому интересно в чем же тут было дело:

В моем случае оба приобразования объектов (из одного в другой и обратно) нужно писать в одном из классов, например в "money". Для преобразования из sterling в money используется операция преобразования
C++
1
operator money() const
А для преобразования из money в sterling просто конструктор с аргументом типа money
C++
1
sterling (money temp)
Вот и вся магия
Так же если класса два, то все это безобразие обязательно нужно писать во втором классе, а в общем случае - в последнем.

Итак, рабочий код:

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
#include<iostream>
using namespace std;
 
class money
{
private:
 
    double m;
 
public:
 
    money(double tm)
    {
        m = tm;
    }
 
    void show()
    {
        cout << "GB to USA : " << m << endl;
    }
 
    double mGet()
    {
        return m;
    }
 
};
 
class sterling
{
private:
 
    int p;
    int sh;
    int pen;
 
public:
 
    sterling(int tp, int tsh, int tpen)
    {
        p = tp;
        sh = tsh;
        pen = tpen;
    }
 
    sterling (money temp)
    {
        pen = temp.mGet() * 100 / 20.83 + 0.5;
        p = pen / 240 + 0.5;
        sh = (pen - p * 240) / 12 + 0.5;
        pen = pen - p * 240 - sh * 12 + 0.5;
    }
 
    void show()
    {
        cout << "USA to GB : " << p << "." << sh << "." << pen << endl;
    }
 
    operator money() const
    {
        double tm;
        tm = static_cast<int>((p * 20 * 12 + sh * 12 + pen) * 20.83 + 0.5);
        tm /= 100;
        return money(tm);
    }
 
};
 
int main()
{
    sterling s1(1, 0, 0);
    money m1 = s1;
    m1.show();
    
    money m2(50.00);
    sterling s2 = m2;
    s2.show();
    
    system("pause");
    return 0; 
}

P.S.: Задача из книжки Р. Лафоре Гл. 8, Упр. 12
 
Текущее время: 15:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru