Форум программистов, компьютерный форум, киберфорум
Наши страницы

Базовый тип чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Чтение из файла http://www.cyberforum.ru/cpp-beginners/thread516838.html
Проясните, пожалуйста, один вопрос: есть файл такого содержания - 12 23 32 43 45 95 Простейшая программа: #include<iostream> #include<fstream> //потоки using namespace std; int main()...
C++ количества элементов линейной таблицы Составить программу для подчета суммы и количества элементов линейной таблицы А, состояще из 20 целых чисел,имеющих четные значения. http://www.cyberforum.ru/cpp-beginners/thread516833.html
Задать параметр для компоновщика в VS C++
Рассматриваю один из примеров Петзолда где общая память расшаривается через библиотеку для нескольких экземпляров приложения, вот только если у Петзолда она расшаривается то у меня нет (одновременно...
C++ Неправильное выделение байтов
void *_upointer; int type:2; В классе присутствуют 2 переменные. Насколько я знаю, указатель занимает 4 байта, а int в данном случае должен занимать 1. итого: 5. когда использовал sizeof,...
C++ Правильно ли считываю матрицу? http://www.cyberforum.ru/cpp-beginners/thread516795.html
Ребят, правильно ли я считываю матрицу из файла? И еще: чтобы узнать размер матрицы, мне обязательно нужно открыть файл и, посмотрев ее кол-во строк и столбцов, сделать соответствующие изменения в...
C++ Указатель на уничтоженный массив int *point; void func() { int mass; for(int i=0; i<16; ++i) mass = 16-i; point = mass; } int main() подробнее

Показать сообщение отдельно
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
12.03.2012, 17:56
Цитата Сообщение от gooseim Посмотреть сообщение
это конечно хорошо, но у автора по задумке было конвертирования из одного типа в другой, если они не совпадают (operator+=)
Не беда.

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
private:
   union value_type
   {
      int integer;
      double real;
   } value;
 
public:
   NumericBase &operator+=(const NumericBase &n)
   {
      value_type v = convert_if_need(n);
 
      switch (type)
      {
      case INTEGER:
         value.integer += v.integer;
         break;
      case REAL:
         value.real += v.real;
         break;
      }
      
      return *this;
   }
 
private:
   value_type convert_if_need(const NumericBase &n)
   {
      value_type v = n.value;
      
      if (type != n.type)
      {
         v.real = (n.type == INTEGER ? n.value.integer : n.value.real);
         type = REAL;
      }
      
      return v;
   }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
   NumericBase a = 10, b = 15;
   a += b;
   
   cout << a << " " << b << endl;
   
   NumericBase c = 1.5, d = 3.5;
   c += a;
   d += b;
   
   cout << c << " " << d << endl;
}
Код
25 15
26.5 18.5
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.