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

Код. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ проверка на пустоту строки http://www.cyberforum.ru/cpp-beginners/thread281500.html
подскажите как сделать чтобы проверялось еще одно условие if((ff==' ') || (ff=='')) то есть надо чтобы проверялось заполнена строка или нет в противном случае заполнить её _ const rt=100; char ggh(char ff) { cin.sync(); cin.getline(ff, 100); for(int z33=0;z33<rt;z33++) {
C++ Связывание treeview и listview Доброго времени суток!))Пишу проводник на с++ с использованием winapi,создал отдельно treeview и listview,как их теперь связать?Заранее спасибо)) http://www.cyberforum.ru/cpp-beginners/thread281496.html
Линейная интерполяция в с++ C++
Помогите пожалуйста...не могу разобраться с двумя ошибками и программа выводит полный бред... Задача такова:найти значение функции в заданных точках(t1,t2,t3)для зависимостей x,y и x13,y13 рез-ты вывести на экран и записать в файл #include <cstdlib> #include <iostream> #include <fstream> #include <iomanip>
C++ что не так делаю?!
почему не правильно! помогите! #define SIZE 4 #include<iostream.h> int main() { int matrix; for (int i=0; i<0; i++) for(int j=0; j<0; j++) {
C++ Квантовый баг http://www.cyberforum.ru/cpp-beginners/thread281455.html
Нет, это не баг в программе для квантового компьютера. Это баг в программе для внешнего устройства. Блуждающий, прячущийся баг: при определённых условиях программа вылетает (наверное при разыменовании нулевого указателя или при обращении к несуществующей памяти) - самое классное в том, что как только начинаешь его искать - он сразу перестаёт появляться. Видимо это связано со стеком: добавляю...
C++ Рекурсивная, нерекурсивная и in-line функции НОД Написать программу, наибольший общий делитель нескольких чисел, содержащую не менее трех функций в разных файлах .c (.cpp), и три варианта определения функций:  нерекурсивная  рекурсивная  inline подробнее

Показать сообщение отдельно
Maksim_27_10
1 / 1 / 0
Регистрация: 05.11.2009
Сообщений: 23
24.04.2011, 18:45  [ТС]     Код.
Вот улучшенная реализация дескриптора(забыл добавить Release_ - куда же без неё!).

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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
#ifndef __CT_HANDLE_22_04_2011_7eGI7I0M8u8D_mfgYBME10gGy82__
  #define __CT_HANDLE_22_04_2011_7eGI7I0M8u8D_mfgYBME10gGy82__
 
#include <iostream>
 
template< typename Type >
class CT_Pointer
{
  public :
    CT_Pointer( );
    //CT_Leader_Pointer( const CT_Leader_Pointer &a );
    //const CT_Leader_Pointer& operator = ( const CT_Leader_Pointer &b );
    ~CT_Pointer( );
 
  public :
    Type * Get_Pointer_( );
    void Addition_Reference_( );
    bool Release_Reference_( );
    unsigned int Get_Count_( );
 
  private :
    unsigned int count_;
    Type         *pointer_;
};
 
template < typename Type >
inline CT_Pointer< Type >::CT_Pointer( )
{
  this->pointer_ = new Type( );
  this->count_   = 1;
 
  std::cout << "CT_Pointer Create." << std::endl;
}
 
template < typename Type >
inline CT_Pointer< Type >::~CT_Pointer( )
{
  delete this->pointer_;
 
  std::cout << "CT_Pointer Destroy." << std::endl;
}
//=============================================================================
 
template < typename Type >
inline Type * CT_Pointer< Type >::Get_Pointer_( )
{
  return( this->pointer_ );
}
 
template < typename Type >
inline void CT_Pointer< Type >::Addition_Reference_( )
{
  ++this->count_;
}
 
template < typename Type >
inline bool CT_Pointer< Type >::Release_Reference_( )
{
  bool result = false;
 
  --this->count_;
 
  if( this->count_ == 0 )
  {
    delete this->pointer_;
    this->pointer_ = NULL;
    result         = true;
  }
 
  return( result );
}
 
template < typename Type >
inline unsigned int CT_Pointer< Type >::Get_Count_( )
{
  return( this->count_ );
}
/******************************************************************************
  *                                                                         *  
  *                                                                         *
  *                                                                         *
  *                                                                         *
  *                                                                         *
******************************************************************************/
template < typename Type >
class CT_Handle
{
  public :
    CT_Handle( );                                                              // Указатель вникуда.
    CT_Handle( bool b );                                                       // Создаёт объект.
    CT_Handle( const CT_Handle &a );                                           // Увеличивает количество ссылок.
    const CT_Handle& operator = ( const CT_Handle &b );                        // По ситуации.
    ~CT_Handle( );
 
  public :
    operator Type    * ( ) { return( this->pointer_->Get_Pointer_( ) ); }
    Type * operator -> ( ) { return( this->pointer_->Get_Pointer_( ) ); }
 
  public :
    unsigned int Get_Count_( );
    void Release_( );
 
  private :
    CT_Pointer< Type > *pointer_;
};
 
template < typename Type >
inline CT_Handle< Type >::CT_Handle( )
{
  this->pointer_ = NULL;
}
 
template < typename Type >
inline CT_Handle< Type >::CT_Handle( bool b )
{
  this->pointer_ = new CT_Pointer< Type >( );
}
 
template < typename Type >
inline CT_Handle< Type >::CT_Handle( const CT_Handle &a )
{
  this->pointer_ = a.pointer_;
 
  if( this->pointer_ != NULL )
    this->pointer_->Addition_Reference_( );
}
 
template < typename Type > inline const CT_Handle< Type >& 
CT_Handle< Type >::operator = ( const CT_Handle< Type > &b )
{
  if( this->pointer_ == NULL )
  {
    if( b.pointer_ != NULL )
      b.pointer_->Addition_Reference_( );
  }
  else
  {
    if( this->pointer_ != b.pointer_ )
    {
      if( b.pointer_ != NULL )
        b.pointer_->Addition_Reference_( );
      
      /*if( this->pointer_->Release_Reference_( ) )
        delete this->pointer_;*/
      this->Release_( );
    }
  }
 
  this->pointer_ = b.pointer_;
 
  return( *this );
}
 
template < typename Type >
inline CT_Handle< Type >::~CT_Handle( )
{
  //if( this->pointer_ != NULL )
  //  if( this->pointer_->Release_Reference_( ) )
  //    delete this->pointer_;   
  this->Release_( );
}
//=============================================================================
 
template < typename Type >
inline unsigned int CT_Handle< Type >::Get_Count_( )
{
  if( this->pointer_ == NULL )
    return( 0 );
  else
    return( int(this->pointer_->Get_Count_( )) );
}
 
template < typename Type >
inline void CT_Handle< Type >::Release_( )
{
  if( this->pointer_ != NULL )
    if( this->pointer_->Release_Reference_( ) )
    {
      delete this->pointer_;
      this->pointer_ = NULL;
    }
    else
    {
      this->pointer_ = NULL;
    }
}
//=============================================================================
 
#endif
 
/*
ТЕСТОВАЯ ВЕРСИЯ.
 
Дата создания: 22.04.2011.
Дата исправлений: 
1) 24.04.2011 года.
Описание исправлений: нет.
1. 
  1.1. Изменено возвращаемое значение функции CT_Handle< Type >::Get_Count_( ) 
       c int на unsigned int. Теперь при пустом дескрипторе эта функция 
       возвращает 0, а не -1, что является более правильным.
  1.2. Добавлена функция CT_Handle< Type >::Release_( ), которая делает 
       дескриптор пустым + автоматически удаляет объект, если количество ссылок
       равно нулю. 
       Для пустого дескриптора эта функция ничего не делает.
  1.3. Изменена реализация декрементации количества ссылок в операторе 
       присваивания и деструкторе. Теперь это делает Release_( ).
Автор: Максим Владимирович Ковалёв.
*/
 
Текущее время: 07:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru