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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2012, 15:52   #1
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
Вопрос Конструктор и деструкторы

Добрый день, не могу не как написать правильно конструктор, до этого была задача в решении примера и теперь надо по аналогии решить ее же, только с конструктором и деструктором, вот нюансы задачи
"Общая постановка. Пользовательский класс Х должен содержать необходимые элементы-данные, которые создаются в динамической области памяти.
• Конструктор для их создания (операция new) и установки их начальных значений: class_Х(); // про динамич. памят я не понял....
• деструктор: ~class_Х();
• friend – функция печати: friend void print();
• функция, решающая поставленную задачу: friend Void Run().
Код методов и функций – вне пространства определения класса."

вот программа которую я сделал ранее :
Код:
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;

class Set
{
public: 
	double y, x, t, z,PI;
	void Print(void);
};

void Set ::Print(void)
{
	cout<< "x = 14.26" << endl;
	cout<< "y = -1.22" << endl;
	cout<< "z = pow(3.5,0.01)"<< endl;
	cout<< "Pi = 3.14"<< endl;
	cout<< "response = "<< t << endl;
};

void Run()
{
	Set response, X , Y, Z, pi;
	X.x = 14.26;
	Y.y = -1.22;
	pi.PI = 3.14;
	Z.z = pow(3.5,0.01);
	response.t = ((2 * cos( X.x - pi.PI/6))/(0.5 + (sin(Y.y)*sin(Y.y)))) * (1+(Z.z*Z.z)/(3-((Z.z*Z.z)/5)));
	response.Print();
	getchar();
};


void main(void)
{
	Run();
}


вот код который я щас делаю :
Код:
#include<stdio.h>
#include<iostream>
#include<math.h>

using namespace std;

void Print(void);
double Run();

class class_X 
{
public:
	class_X(double);
	~class_X(void);
	double y, x, t, z, PI;
};


class_X::(double y,double x,double z,double PI)         // говорит что я ее                //перегружаю, overloaded member function not found in 'class_X' и see //declaration of 'class_X'
{
	x = 14.26;
	y = -1.22;
	PI = 3.14;
	z = pow(3.5,0.01);
	t = Run(y, x , z, PI);
}

void Print()
{
	cout<< "x = 14.26" << endl;
	cout<< "y = -1.22" << endl;
	cout<< "z = pow(3.5,0.01) "<< endl;
	cout<< "Pi = 3.14"<< endl;
	cout<< "response = "<< t << endl;      // undeclared identifier
	getchar();
}

double Run(double y,double x,double z,double PI)
{
	return(((2 * cos( x - PI/6))/(0.5 + (sin(y)*sin(y)))) * (1+(z*z)/(3-((z*z)/5))));
}


class_X::~class_X(void)              
{
	cout << "Delete destruction " << endl; 
}


void main(void)
{
	Print();
}
если есть у кого легкий примерчик, аналогичной программы покажите. Если можно с объяснением, попробывал сделать просто ф-ции, все компилит и правильный ответ выдает, с конструктором и деструктором не хочет.
Тёма_) вне форума Ответить с цитированием
Старый 03.04.2012, 17:05   #2
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию

ой конструктор сюда скопировал не весь, в коде он такой :
Цитата:
class_X::class_X(double y,double x,double z,double PI)
{
x = 14.26;
y = -1.22;
PI = 3.14;
z = pow(3.5,0.01);
t = Run(y, x , z, PI);
}
ошибки 'class_X::class_X(double,double,dou ble,double)' : overloaded member function not found in 'class_X' и see declaration of 'class_X'
Тёма_) вне форума Ответить с цитированием
Старый 03.04.2012, 17:26   #3
LiuLiuJons
Форумчанин
 
Регистрация: 28.12.2011
Сообщений: 124
По умолчанию

Код:
class class_X 
{
public:
	class_X(double);
	~class_X(void);
	double y, x, t, z, PI;
};
Ну вот тут объявление классовых функций, конструкторов. Сейчас конструктор у вас один! (это class_X(double);)

А вот тут:
Код:
class_X::class_X(double y,double x,double z,double PI)
{
x = 14.26;
y = -1.22;
PI = 3.14;
z = pow(3.5,0.01);
t = Run(y, x , z, PI);
}
Вы пытаетесь описать другой конструктор, хотя в классе этот конструктор не объявили.

Поэтому получаете такую ошибку:
Цитата:
'class_X::class_X(double,double,dou ble,double)' : overloaded member function not found in 'class_X' и see declaration of 'class_X'
"Думай не о задаче, а о решении" (с)
LiuLiuJons вне форума Ответить с цитированием
Старый 03.04.2012, 17:42   #4
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию

ооо точно)) спасибо)) написал конструктор
Код:
class_X::class_X(double)
{
	x = 14.26;
	y = -1.22;
	PI = 3.14;
	z = pow(3.5,0.01);
	t = Run(y, x , z, PI);
}
и все корректно заработало)) спасибо тебе, LiuLiuJons )) не первый раз выручаешь)

Последний раз редактировалось Тёма_); 03.04.2012 в 17:45.
Тёма_) вне форума Ответить с цитированием
Старый 03.04.2012, 18:11   #5
LiuLiuJons
Форумчанин
 
Регистрация: 28.12.2011
Сообщений: 124
По умолчанию

Цитата:
Сообщение от Тёма_) Посмотреть сообщение
и все корректно заработало)) спасибо тебе, LiuLiuJons )) не первый раз выручаешь)
Я только указала на ошибку.

Но ты мог бы не удалять указанный конструктор, а добавить его описание к классу, вот так:
Код:
class class_X 
{
public:
	class_X(double);
        class_X(double y,double x,double z,double PI);
	~class_X(void);
	double y, x, t, z, PI;
};
В классе может быть несколько конструкторов, если у них разные параметры (типы параметров, кол-во параметров). (Тебе стоит углубиться в теорию о классах - там всё это описано)
Только и этот конструктор class_X(double); тоже всё-таки потом стоило бы описать.

И ещё одно - переменные (double y, x, t, z, PI;) как правило, пишутся в private, а не в public. Для того, чтобы изменить их можно было только по средствам классовых функций. Тоесть переписать переменные можно будет только вызвав эту классовую функцию.
"Думай не о задаче, а о решении" (с)
LiuLiuJons вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструкторы и деструкторы programmm Помощь студентам 0 04.06.2011 16:33
С++ (конструктор, деструктор, копирующий конструктор) Jane-sad Помощь студентам 2 01.10.2010 10:01
С++ и С# Конструкторы и Деструкторы exKenny Помощь студентам 1 27.04.2010 12:32