| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				Возраст: 39      C нами с 25.01.2005 Репутация: 133    
				 | 
			 
		 | 
		
			
				
					
						
							Неоспоримым достоинством языка С++ является то, что он является языком одновременно и высокого и низкого уровней, что делает его незаменимым при разработке игр и других сложных и требовательных к производительности приложений. 
 
 
P.S. Перед задаванием вопросов вроде "Что делает эта функция" настоятельно рекомендуется поизучать MSDN.
 
P.P.S. В ближайшее время выложу много литературы по этому вопросу.						
					 | 
				 
				
					| 
						
							
						
						
													
						
		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				Возраст: 38       C нами с 03.04.2006 Репутация: 73.7    
				 | 
			 
		 | 
		
			
				
					
						
							Вот скажите я индус что-ли? посмотрите что тут может быть не так?
 
 
free_boundary::free_boundary(point pstn, point nrml, unsigned int np, double S, double T, double alpha)
{
....
     this->nrml = nrml;
     this->pstn = pstn;
     this->np = np;
     this->T = T;
....
} |   
 
 
никак не могу понять почему не работает.
 
 
з.ы.смотри прикрепленную картинку!
 
з.ы.ы. глюк не только с pstn, но и с np...
 
з.ы.ы.ы. у структуры point перегружено несколько операторов, но operator= не перегружен.						
					 | 
				 
				
					
						
							
						
						
							 _____________________________ "Если да, конечно нет" Futurama						
						
 
 
  
						debug1 
	
	  
	pic1.jpg - Просмотров: 53
  
	
	
 		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				Возраст: 46       C нами с 19.08.2008 Репутация: 83.3    
				 | 
			 
		 | 
		
			
				
					
						
							1. А входной pstn точно корректный?
 
2. Ну, оператора = нет, но может есть плохой конструктор вида point &point::point(const point &)?
 
3. А может быть просто объект this уже битый вусмерть?  Запустите приложение под аналогом valgrind'а (не уверен, что он для Винды есть).						
					 | 
				 
				
					| 
						
							
						
						
													
						
		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				       C нами с 15.04.2005 Репутация: 133.2    
				 | 
			 
		 | 
		
			
				
					| 
						
							AAsad, а ещё неплохо бы посмотреть декларацию объекта free_boundary.						
					 | 
				 
				
					
						
							
						
						
							 _____________________________ Время не существует, у него нет физического носителя в природе. Его выдумал человек, чтобы измерять скорость.						
						
		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				Возраст: 35     C нами с 16.04.2006 Репутация: 56.8    
				 | 
			 
		 | 
		
			
				
					| 
						
							а в последнем (нижнем) примере в pstn x, y и z равны нулю?  Фишка в том, что при работе с вещественными числами грубо говоря при присваивании может чуть-чуть потеряться точность. У присвоенных чисел в примере степень e-026, то есть 10^-26, то есть ооочень маленькое число, т.е. можно считать, что x, y и z равны нулю. При работе с вещественными (float или double) числами довольно часто такое происходит.						
					 | 
				 
				
					| 
						
							
						
						
													
						
		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				Возраст: 38       C нами с 03.04.2006 Репутация: 73.7    
				 | 
			 
		 | 
		
			
				
					
						
							class free_boundary :
	public boundary
{
private:
	deque<cell> cells_ptr;
	deque<cell>::iterator cell_iter;
	unsigned int np;
	double Vn;
	double T;
	double S;
	static double erf(double x);
	point V;
public:
	void add_cell(deque<cell> *cluster_cells);
	void set_np(unsigned int np);
	int bondary_condition(deque<particle> *cluster_particle, double dt);
	free_boundary(point pstn, point nrml, unsigned int np, double S, double T, double alpha);
	free_boundary(void);
	~free_boundary(void);
}; |   
 
 
class boundary
{
private:
	char type[6];
public:
	point nrml;
	point pstn;
	
	virtual int bondary_condition(deque<particle> *a, double dt = 0) = 0;
	void set_position(point a);	
	void set_normal(point a);
}; |   
 
 
насчет нулей то там, pstn.x = -1, pstn.y = 0, pstn.z = 0;
 
 
а насчет this ща попробую разобраться. 
 
а насчет конструктора, то вот класс point:
 
struct point
{
public:
	double x, y, z;
public:
	point(void);
	point(double x, double y, double z);
	~point(void);
	void print();
	double mod();
	point set(double x, double y, double z);
	friend point operator+(point a, point b);
	friend double operator*(point a, point b);
	friend point operator*(point a, double b);
	friend point operator/(point a, double b);
	friend point operator-(point a, point b);
	friend point operator!(point a);
	point vec_mult(point p1);
}; |   						
					 | 
				 
				
					
						
							
						
						
							 _____________________________ "Если да, конечно нет" Futurama						
						
		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				Возраст: 46       C нами с 19.08.2008 Репутация: 83.3    
				 | 
			 
		 | 
		
			
				
					
						
							
  
	| AAsad писал(а): | 
   
  
	
	  
friend point operator+(point a, point b);
friend double operator*(point a, point b);
friend point operator*(point a, double b);
friend point operator/(point a, double b);
friend point operator-(point a, point b);
friend point operator!(point a);
  |    
		   | 
		 
	   
 
Сходу. Тут friend не нужен: класс тот же.  Friend понадобится только для деклараций типа point operator*(double a, point b)						
					 | 
				 
				
					| 
						
							
						
						
													
						
		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				Возраст: 35     C нами с 16.04.2006 Репутация: 56.8    
				 | 
			 
		 | 
		
			
				
					| 
						
							AAsad, Видимо, ошибка в  this... Возможно, где-то какой-то указатель удаляется раньше времени... можно в дебагере посмотреть, какое значение this вообще имеет, и меняется ли оно по ходу выполнения... а как вы вызываете конструктор free_boundary? Можно ли полный код контруктора глянуть? и чем отличается верхний пример (который корректно выполняется) от нижнего?						
					 | 
				 
				
					| 
						
							
						
						
													
						
		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				Возраст: 38       C нами с 03.04.2006 Репутация: 73.7    
				 | 
			 
		 | 
		
			
				
					
						
							вы про картинку? если да, то это остановка на брэйкпоинте из дэбагера(VisualStudio 2010). просто я хотел показать что this->pstn не хочет становиться равной pstn. кстати сейчас понял что присваивание происходит, но почему-то позже(может из-за оптимизации VS). я просто отлавливал другой баг и наткнулся на этот баг, думал что все из-за это не хочет работать. лан пойду дальше отлавливать жуков.
 
 
з.ы. tigra564, спасибо уже исправил, хотя и так работало:)
 
з.ы.ы. кстати с прогой иногда вообще непонятная фигня происходит, была у меня строчка if(nrml.x > 0){...}, так там nrml.x = -1, но прога упорно лезла внутрь ифа... я так и не понял почему... видимо где-то был глюк(может даже у меня в голове)						
					 | 
				 
				
					
						
							
						
						
							 _____________________________ "Если да, конечно нет" Futurama						
						
		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				Возраст: 35     C нами с 16.04.2006 Репутация: 56.8    
				 | 
			 
		 | 
		
			
				
					
						
							AAsad, да, вполне возможно, что из-за оптимизации... чтобы легче было дебажить, можно так написать:
 
 
free_boundary::free_boundary(point pstn, point nrml, unsigned int np, double S, double T, double alpha)
 
:
 
  nrml (nrml),
 
  pstn (pstn),
 
  np (np),
 
...
 
{
 
...
 
}
 
 
Так лечгче будет понять, в какой момент инициализация атрибутов класса уже произошла						
					 | 
				 
				
					| 
						
							
						
						
													
						
		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				Возраст: 46       C нами с 19.08.2008 Репутация: 83.3    
				 | 
			 
		 | 
		
			
				
					
						
							
  
	| AAsad писал(а): | 
   
  
	| 
	  может из-за оптимизации VS
		   | 
		 
	   
 
Вполне возможно, что куча ваших присваиваний заменена на какой-нибудь вызов векторного копирования.
 
 
  
	| AAsad писал(а): | 
   
  
	| 
	  была у меня строчка if(nrml.x > 0){...}, так там nrml.x = -1, но прога упорно лезла внутрь ифа...
		   | 
		 
	   
 
Скомпилируйте без оптимизации.  Наверняка после этого отладчик будет дело показывать.						
					 | 
				 
				
					| 
						
							
						
						
													
						
		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				       C нами с 15.04.2005 Репутация: 133.2    
				 | 
			 
		 | 
		
			
				
					| 
						
							AAsad, не отлаживайте программу скомпилированную с оптимизацией — граблей мильоны. Только в крайнем случае, если поведение оптимизированной и неоптимизированной отличается.						
					 | 
				 
				
					
						
							
						
						
							 _____________________________ Время не существует, у него нет физического носителя в природе. Его выдумал человек, чтобы измерять скорость.						
						
		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				    C нами с 09.08.2007 Репутация: 92.7    
				 | 
			 
		 | 
		
			
				
					| 
						
							По умолчанию в дебаге оптимизация отключена. Да и, вероятно, VS ругалась бы, если бы не туда пыталась писать. А точно конфигурация дебаговская? Может релизовская, и в настройках не стоит генерация отладочной информации?						
					 | 
				 
				
					| 
						
							
						
						
													
						
		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				Возраст: 36     C нами с 08.09.2007 Репутация: 100.9    
				 | 
			 
		 | 
		
			
				
					
						
							Рассказываю быстро и внятно  Есть исходники, когда компилирую... требует "JvSystemC6R.lib" Где как и откуда мне эту библиотеку родить... Честно понятия не имею! И во избежании спама! ДА к поисковой системе Гугл я обращался... Как видите... Толку чуть! Кому нужна какая инф. я с радостью поделюсь, если это поможет делу!
 
Среда разработки C++ Builder 2010						
					 | 
				 
				
					
						
							
						
						
							 _____________________________ Слушать радио Power FM 320 kbps						
						
		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				Возраст: 46       C нами с 19.08.2008 Репутация: 83.3    
				 | 
			 
		 | 
		
			
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  	
		| 
			
		 | 
		
			
		 | 
	
	
		
			
			
				Возраст: 36     C нами с 08.09.2007 Репутация: 100.9    
				 | 
			 
		 | 
		
			
				
					
						
							Если можно выложи-те!!! библиотеки JvSystemC6R.lib и JvCoreC6R.lib я найти их ни как не могу...  						
					 | 
				 
				
					
						
							
						
						
							 _____________________________ Слушать радио Power FM 320 kbps						
						
		  
					 | 
				 
			 
		 | 
	
	
	| 
			
		 | 
		
			
		 | 
	
	
		  | 
	
  
	
		| 		 | 
	
	
		| 
 |