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

Умные указатели - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверить, является ли дата правильной http://www.cyberforum.ru/cpp-beginners/thread298235.html
Пожалуйста, помогите добить задачку!:wall: Написать функцию, которая проверяет что переменная типа date содержит правильную дату. Примечание. Год не=0, месяц - типа enum, день=от1 до 31(в...
C++ Помогите с перегрузкой операций. Створити динамічний клас для роботи з рядками. Максимальна довжина послідовності – 254. Перший байт повинен містити інформацію про фактичну кількість елементів масиву. Здійснити перевантаження... http://www.cyberforum.ru/cpp-beginners/thread298229.html
Перегрузка операторов для класса матриц C++
Собственно, суть проблемы. Пишу класс матриц (хочется), оператор присваивания работает только тогда, когда функция (ну или, например, оператор +) возвращает *this и тип возвращаемого значения -...
C++ Перестановка чисел в массиве
задача: дан массив и число x. переставить числа в массиве таким образом, чтобы сначала массива шли числа, меньшие x, затем равные x, в конце - большие x. если не затруднит подскажите алгоритм...
C++ Вывод иероглифов вместо русских символов http://www.cyberforum.ru/cpp-beginners/thread298185.html
ситуация такая вывожу строки на русском с помощью printf() в коде программы, перед этим пишу setlocale(LC_ALL, "") все нормально, но когда в процессе работы программы ввожу русские данные в консоле...
C++ Динамический список опять Уже, наверно, достал с этими списками). Чуть-чуть, вроде осталось). Вот разобрался, в конце концов, как работают в функции в коде ниже. Теперь не понимаю, как их вызвать в функцию main(), Помогите,... подробнее

Показать сообщение отдельно
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
17.05.2011, 23:32
Простейшая реализация шаблона:
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
#include <iostream>
 
template <class ValueType>
class AutoPointer {
 public:
  AutoPointer() : data_(NULL) {}
  explicit AutoPointer(ValueType *data) : data_(data) {}
  ValueType *Get() { return data_; }
  void Reset(ValueType *pointer = NULL) {
    delete data_;
    data_ = pointer;
  }
  ValueType *Release() {
    ValueType *result = data_;
    data_ = NULL;
    return result;
  }
  ValueType &operator*() { return *data_; }
  ValueType *operator->() { return data_; }
  AutoPointer &operator=(AutoPointer &other) {
    if (&other != this) {
      Reset();
      data_ = other.Release();
    }
    return *this;
  }
  template <class OtherValueType>
  operator AutoPointer<OtherValueType>() {
    return AutoPointer<OtherValueType>((OtherValueType*)data_);
  }
 private:
  ValueType *data_;
};
 
int main(int argc, char **argv) {
  AutoPointer<int> a(new int), b(new int);
 
  *a = 10;
  *b = 5;
 
  std::cout << "a: " << a.Get() << ": " << *a << std::endl
            << "b: " << b.Get() << ": " << *b << std::endl;
 
  a = b;
 
  std::cout << "a: " << a.Get() << ": " << *a << std::endl
            << "b: " << b.Get() << ": " << "NO DATA" << std::endl;
  return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru