lapulya
							
								Молодой специалист 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									«  Ответ #150 : 03-01-2010 11:17 »    | 
								
								 | 
							  
							 
							Алексей1153++,  Дык я знаю разницу между виртуальным и не виртуальным деструктором, только к данному случаю то это какое отношение  ты же пишешь аллокатор, если он хапает память (а он только это и делает    ) и если в деструкторе он эту память освобождает (а именно так и будет), то пиши пропало... А  "Ctrl-C" - это о чём ? У мну в студии нет такого сочетания ) это грохает прогу запущенную из комадной строки в консоли (типа когда ты ее запустил из студии)  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							С уважением Lapulya 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #151 : 03-01-2010 14:37 »   | 
								
								 | 
							  
							 
							ты же пишешь аллокатор, если он хапает память 
  Ну, то есть, в случае наследования он, конечно, что-то и захапает, только я же его мемберами то не пользуюсь. Так что, в Багдаде полная спокуха на этот счёт ) Ну я уже понял, что наследовать не надо, смысла нету, просто содрать из исходников код и переписать  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							lapulya
							
								Молодой специалист 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #152 : 03-01-2010 23:56 »   | 
								
								 | 
							  
							 
							Пушистый... я тебя ПОКУСАЮ!!! прочитай зачем нужен виртуальный деструктор!!! В Багдаде все плохо - места нет, все аллокатор, падла, сожрал, потому что пушистый не знает зачем нужен виртуальный деструктор!!! 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							С уважением Lapulya 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #153 : 04-01-2010 03:58 »   | 
								
								 | 
							  
							 
							Багдад мирно спит    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							lapulya
							
								Молодой специалист 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #154 : 04-01-2010 04:01 »   | 
								
								 | 
							  
							 
							Не    еще нет   )  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							С уважением Lapulya 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #155 : 08-01-2010 20:47 »   | 
								
								 | 
							  
							 
							Ну а всё-таки: насколько я понял по экспериментам, то когда вызывается метод вектора resize и происходит увеличение размера вектора, то конструктор типа элемента вектора вызывается один раз. А потом, так понимаю, содержимое этого "эталона" копируется в новые экземпляры. Так ? То есть, я к чему, если в конструкторе завести, к примеру, статический счётчик - он будет неправильно подсчитывать количество созданных экземпляров ? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Вад
							
						 | 
						
							
								  | 
								
									
									 « Ответ #156 : 08-01-2010 23:31 »   | 
								
								 | 
							  
							 
							Думаю, он в любом случае будет неправильно подсчитывать - потому что экземпляры в массе своей будут порождаться конструктором копирования, а если поставить счётчик и там - то будет весьма сложно определить, сколько экземпляров создаётся по делу, потому что при операциях над вектором значения также будут копироваться.
  Насчёт механизма копирования вектора не уверен - надо смотреть исходники. По-моему, должен делаться realloc силами аллокатора, а вот как затем происходит копирование - подозреваю, с помощью копирующего конструктора. Боюсь соврать. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 08-01-2010 23:36 от Вад »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #157 : 09-01-2010 05:28 »   | 
								
								 | 
							  
							 
							Ну мне как бы счётчик и не нужен, я пытаюсь разобраться, сколько раз конструктор вызовется при увеличении вектора на N элементов 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #158 : 12-05-2010 09:31 »   | 
								
								 | 
							  
							 
							пытаюсь сделать такую вещь: имеется несколько структур, и нужно, чтобы они все были такого вида #pragma pack(push,1) struct s1 { 	union 	{ 		struct 		{ 			BYTE m_body7[7];//общий тел 		};
  		struct 		{ 			//7 байтов структуры s1 			BYTE by; 			WORD w; 			DWORD dwd; 		};
  	}; };
  struct s2 { 	union 	{ 		struct 		{ 			BYTE m_body7[7];//общий тел 		};
  		struct 		{ 			//7 байтов структуры s2 			WORD wd1; 			WORD wd2; 			WORD wd3; 			BYTE by1; 		};
  	}; }; #pragma pack(pop)
  пытаюсь зашаблонить: #pragma pack(push,1) template<typename T> union u_PutData { 	struct {BYTE m_body7[7];};	//общий тел 	struct :public T{};		//разные данные 	u_PutData() 	{ 		::memset(&m_body7,0,sizeof(m_body7)); 	} }; #pragma pack(pop)
  но при определении конечных структурок не получается задать параметр T как безымянный, то есть так: struct s2:public u_PutData < 	struct //безымянная структура - хочу так!!!  	{ 		WORD wd1; 		WORD wd2; 		WORD wd3; 		BYTE by1; 	}; >{};
  как это сделать или сделать максимально похоже ?  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 12-05-2010 09:34 от Алексей1153++ »
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Вад
							
						 | 
						
							
								  | 
								
									
									 « Ответ #159 : 12-05-2010 10:20 »   | 
								
								 | 
							  
							 
							А почему ты так хочешь?    В смысле, чего добиваешься - спрятать структуру? От кого? От этого зависит, что будет означать "сделать похоже". Кроме того, от union наследоваться не получится.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Dimka
							
								Деятель 
								Команда клуба
								
								 
								  Offline
								Пол:   
								
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #160 : 12-05-2010 13:24 »   | 
								
								 | 
							  
							 
							По-моему это бессмысленная затея с union. Достаточно: #include <iostream>
  struct X {    unsigned char x; };
  template<class T> class U { private:    T instance; public:    unsigned char *getBody()    {       return reinterpret_cast<unsigned char *>(&this->instance);    }    T *operator->()    {       return &this->instance;    } };
  int main() {    U<X> x;    x->x = 'X';    std::cout << x->getBody()[0] << std::endl;    return 0; }  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел) 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #161 : 12-05-2010 14:23 »   | 
								
								 | 
							  
							 
							Dimka, да, наверное так проще. Ещё в конструктор в дебаге добавлю контроль на размер в 7 байтов
  Вад, да фигнёй, похоже, я страдаю ) Все структуры должны быть 7 байтов, содержимое же разное. Вот и хотел эту семёрку так обеспечить. Наследование не требуется 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #162 : 12-05-2010 14:27 »   | 
								
								 | 
							  
							 
							и всё же интересно - можно ли безымянную структуру как параметр шаблона передать )) 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #163 : 12-05-2010 14:46 »   | 
								
								 | 
							  
							 
							кстати, ещё проще можно сделать   #pragma pack(push,1) union sX { 	BYTE m_body7[7];//общий тел
  	struct s1 	{ 		BYTE by; 		WORD w; 		DWORD dwd; 	}m_s1;
  	struct s2 	{ 		WORD wd1; 		WORD wd2; 		WORD wd3; 		BYTE by1; 	}m_s2; }; #pragma pack(pop)
   
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 12-05-2010 17:52 от Алексей1153++ »
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #164 : 01-08-2010 16:33 »   | 
								
								 | 
							  
							 
							для этих целей есть специальная инструкция,  template class Dinamic<int>; 
  блин, ну не получается у меня всё равно шаблонный метод в файл реализации выпихнуть ( да что там в файл, даже в одном файле не хотит компилироваться (по крайней мере в 6-й студии) class A { public:    template<typename T>    int F(T t,int i); };
  template<typename T> int A::F(T t,int i) {    return 0; }
  main() {    A a;    a.F("1",1); }
  error C2893: Failed to specialize function template 'int __thiscall A::F(T,int)'         With the following template arguments:         'char *' А вот в девятке безо всяких пинков - идеально  выходит ) ------------------------------------------------- Хм, а вот тоже нифига не идеально. На этом простеньком примере всё ок, в на большом проекте заупрямился линкер - начал жаловаться на неразрешённые внешние элементы А вышеупомянутую инструкцию не могу понять, как применить - ведь у меня не класс, а функция шаблонная )))  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Антон (LogRus)
							
						 | 
						
							
								  | 
								
									
									 « Ответ #165 : 03-08-2010 04:26 »   | 
								
								 | 
							  
							 
							Алексей1153++, давай договоримся, что "шестёрка" и C++ это разные вещи    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							Странно всё это.... 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #166 : 03-08-2010 05:08 »   | 
								
								 | 
							  
							 
							Та речь не про шестёрку уже    Но я победил при помощи промежуточной не шаблонной функции (нечто вроде специализации)  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	 |