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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Проверить, является ли дата правильной http://www.cyberforum.ru/cpp-beginners/thread298235.html
Пожалуйста, помогите добить задачку!:wall: Написать функцию, которая проверяет что переменная типа date содержит правильную дату. Примечание. Год не=0, месяц - типа enum, день=от1 до 31(в большинстве месяцев). Прога работает, но не совсем верно: например, если ввести 31 февраля (или апреля и т.п.) - выдаст, что дата верна. #include "stdafx.h" #include<iostream>
C++ Помогите с перегрузкой операций. Створити динамічний клас для роботи з рядками. Максимальна довжина послідовності – 254. Перший байт повинен містити інформацію про фактичну кількість елементів масиву. Здійснити перевантаження операцій: " = "– присвоєння, " + " – конкатенація (з’єднання) рядків, " <= " – відношення "менше чи дорівнює", " >= " – відношення "більше чи дорівнює", " == " – відношення "дорівнює", " != " –... http://www.cyberforum.ru/cpp-beginners/thread298229.html
Перегрузка операторов для класса матриц C++
Собственно, суть проблемы. Пишу класс матриц (хочется), оператор присваивания работает только тогда, когда функция (ну или, например, оператор +) возвращает *this и тип возвращаемого значения - ссылка. Иначе, выдаёт: a.out(1181) malloc: *** error for object 0x7fff5fbffa40: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug Abort trap Конструктор...
C++ загрузка из файла не работает
пишу в Qt 4.7, никак не могу написать загрузку из файла, сохранение вроде бы работает, но я не уверена, но загрузка вообще никак. при нажатии в меню Load окно моё закрывается, может подскажете, что я не так делаю? void newForm::Load () { QString fileName = QFileDialog::getOpenFileName (0, "Open Dialog", "", "*.tbl"); if (fileName.length ()) { QFile file (fileName); ...
C++ перестановка чисел в массиве http://www.cyberforum.ru/cpp-beginners/thread298202.html
задача: дан массив и число x. переставить числа в массиве таким образом, чтобы сначала массива шли числа, меньшие x, затем равные x, в конце - большие x. если не затруднит подскажите алгоритм решения этой задачи (а можно и код:)) заранее спасибо.
C++ Вывод иероглифов вместо русских символов ситуация такая вывожу строки на русском с помощью printf() в коде программы, перед этим пишу setlocale(LC_ALL, "") все нормально, но когда в процессе работы программы ввожу русские данные в консоле и также в программе вывожу их, то выводятся иероглифы... подскажите в чем проблема... подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
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;
}
 
Текущее время: 07:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru