Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2012, 00:02   #1
shir994
Новичок
Джуниор
 
Регистрация: 02.03.2012
Сообщений: 1
По умолчанию использование .h файлов в описании класса С++

Как правильнее описывать класс:полностью в .h файле или в .cpp,а в .h выносить только описания функций?.И вот второй вопрос,почему прога вылетает,говоря,что происходит попытка записи в занятую память.
Ошибка явно где-то в описании+=,но не могу понять где,вроде проверял,значение всех переменных верные.
Код:
h.h
#include<iostream>
using namespace std;

class mer
{
public:
	double x,y,z,t;
	mer(double x1=0,double x2=0,double x3=0,double x4=0)
		:x(x1),y(x2),z(x3),t(x4)
	{}
	mer(const mer& q):x(q.x),y(q.y),z(q.z),t(q.t)
	{}
	//~mer()
	//{}
    mer& operator=(const mer& q)
	{   
		x=q.x;y=q.y;z=q.z;t=q.t;
	
		return *this;
	};
	mer operator +=(const mer& q)
	{  x=x+q.x;
	   y=y+q.y;
	   z=z+q.z; 
       t=t+q.t;
	   return(*this);
	}
      mer operator-=(const mer& q)
	{  x=x-q.x;
	   y=y-q.y;
	   z=z-q.z; 
       t=t-q.t;
	   return(*this);
	}
	mer operator+(const mer& q)
	{
		mer p(*this);
		p+=q;
		return p;
	}
		mer operator-(const mer& q)
	{
		mer p(*this);
		p-=q;
		return p;
	}
	mer operator*(const double& q)
	{
		mer p(*this);
		p.x=x*q;
		p.y=y*q;
		p.z=z*q;
		p.t=t*q;
		return p;
	}
	mer operator/(const double& q)
	{
        mer p(*this);
		p.x=x/q;
		p.y=y/q;
		p.z=z/q;
		p.t=t/q;
		return p;
	}
};

ostream& operator<<(ostream& os,const mer& q)
{
	cout<<"(" << q.x << ","<<q.y<<","<<q.z<<","<<q.t<<")"<<flush;
    return os;
}

istream& operator>> (istream& is,mer& q)
{
  double x,y,z,t; is >>x ;
  char c;       is >> c;
  if (c==',') is>> y;
  is >> c;
  if (c==',') is>> z;
  is >> c;
  if (c==',') is>> t;
  q=mer(x,y,z,t);
  return is;
}
main.cpp
#include<iostream>
#include"h.h"
using namespace std;
class vektor
{
protected:
	mer* p;
	int N;
public:
	vektor (int n=0):p(NULL),N(0)
	{
		if(n<=0) return;
		p=new mer[n];
		if(p) N=n;
	}
	~vektor()
	{
		delete p;
		cout<<"rip";
	}
	mer& operator [](int i)
	{
		if (i<0) {cout<<"error";}
		return p[i];
	}
    
	vektor (const vektor& s)
	{
		p=new mer(s.N);
		N=s.N;
		for (int i=0;i<N;i++)
			p[i]=s.p[i];
	}
	int size()const {return N;}
	void insert(int n,mer x)
	{
	mer*	p1=new mer[N+1];
	int i;
	for(i=N;i>n;i--)
		p1[i]=p[i-1];
	p1[i]=x;
	for(i=n-1;i>=0;i--)
		p1[i]=p[i];
	delete p;
	p=p1;
	N=N+1;
	}
	void erase(int n)
	{
		mer*	p1=new mer[N-1];
	int i;
	for(i=N-1;i>n;i--)
		p1[i-1]=p[i];
	for(i=n-1;i>=0;i--)
		p1[i]=p[i];
	delete p;
	p=p1;
	N=N-1;
	}
	vektor operator+=(const vektor q)
	{
		for(int i=0;i<1;i++)
		p[i]+=q.p[i];
		return *this;
	}
};



ostream& operator<<(ostream& os,vektor& q)
{
	for(int i=0;i<q.size();i++)
    cout<<q[i]<<' ';
    return os;
}


void main()
{
	int n;
	cout<<"vvedite razmernost"<<endl;
	cin>>n;
	vektor x(n),y(n);
	mer k;
	for(int i=0;i<n;i++)
	{
		k.x=i;k.y=i;k.z=i;k.t=i;
		x[i]=k;
		y[i]=k;
	}
x+=y;
    cout<<x<<endl<<y;
}
shir994 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c# использование внешнего класса world12_tk Помощь студентам 1 18.04.2011 16:29
использование функций не членов класса Наташенька Общие вопросы C/C++ 7 05.10.2009 19:32
использование класса USB HID MenWantToStabAtAny Общие вопросы C/C++ 0 27.05.2009 23:11
Использование методов вне класса prikolist Общие вопросы C/C++ 12 07.05.2009 13:57
Проблемка при описании класса creator32 Помощь студентам 5 13.11.2008 23:13