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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
#1

функции в классах - C++

14.08.2013, 15:09. Просмотров 290. Ответов 6
Метки нет (Все метки)

есть класс my_class, у него есть две функции
C++
1
2
3
4
5
6
7
8
my_class::X_definition(int k, long double t )
{...
 return x;
};
my_class::Y_definition(int k, long double t )
{...
return y;
};
есть класс my_class2, в нем хочу сделать ф-цию
C++
1
my_class2::Lenght_definition
, которая бы брала два созданных объекта класса (например my_class k1;my_class k2
и делала бы так
C++
1
2
Lenght = sqrt(sqr(k1->X_definition - k2->X_definition)+
sqr(k1->Y_definition - k2->Y_definition));
как это реализовать ? поделитесь идеями пожалуста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
14.08.2013, 15:13     функции в классах #2
soican, не очень понятно в чем проблема, если честно...
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
14.08.2013, 15:21  [ТС]     функции в классах #3
Цитата Сообщение от Wolkodav Посмотреть сообщение
soican, не очень понятно в чем проблема, если честно...
ну я конечно могу просто передать два объекта класса my_class в ф-цию и всё(собственно уже так и сделано, но вот надо показать более глубокие знания ооп ), и я думаю как сделать это через наследование или дружественность двух классов
Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
14.08.2013, 15:31     функции в классах #4
Да вы тут как не танцуйте, у вас два разних экземплера, ну один пускай у вас будет this, второй не из балды же придумать...
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6411 / 3050 / 300
Регистрация: 04.12.2011
Сообщений: 8,238
Записей в блоге: 3
14.08.2013, 15:45     функции в классах #5
soican, в первом объявлении нет типов возвращаемых значений вроде того что:
C++
1
2
3
4
5
6
7
8
9
10
11
12
long double //
my_class::
X_definition(int k, long double t )
{...
 return x;
};
long double  //
my_class::
Y_definition(int k, long double t )
{...
return y;
};
Что касается функции принимающей экземпляры обоих классов то она возвращает:
Lenght//наверняка double или long double
В зависимости от того что означает эта переменная как отношение двух экземпляров и есть ли ещё такие переменные может иметь смысл создать отдельный класс. Можно также сделать её членом класса выражая отношения собственного экземпляра (*this) ко внешнему (принимает один параметр) или статическим членом типа (принимает два экземпляра). Можно и свободной функцией сделать. Это зависит от Вашей задачи, - Вам и решать.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
14.08.2013, 16:07  [ТС]     функции в классах #6
типа такого, спасибо за идею!))
C++
1
2
3
4
5
6
7
8
9
long double my_class::Lenght_def(int k, long double t,
                                int k2, long double t2,
                                my_class* s2 )
{
 Lenght = sqrt(sqr(this->X_definition(k, t) - s2->X_definition(k2, t2) )+
sqr(this->Y_definition(k, t) - s2->Y_definition(k2, t2) ) );
 
return Lenght;
};
Добавлено через 3 минуты
хотя лучше по константной ссылке передам класс
C++
1
(...const my_class& s2 )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2013, 16:10     функции в классах
Еще ссылки по теме:

Подробнее о классах C++
Виртуальные функции (нужно ли во всех производных классах писать слово virtual?) C++
Виртуальные функции в классах - нужен пример C++
Inline функции в классах C++
Set и Get функции в классах C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6411 / 3050 / 300
Регистрация: 04.12.2011
Сообщений: 8,238
Записей в блоге: 3
14.08.2013, 16:10     функции в классах #7
soican, ну да в общем. Явно через this можете не вызывать, - свой объект сам найдёт. Можете перегрузить ещё для вызова через экземпляр:
C++
1
2
3
4
5
6
7
8
 long double my_class::Lenght_def(int k, long double t,
                              int k2, long double t2,
                              my_class s2 )
{
 Lenght = sqrt(sqr(X_definition(k, t) - s2.X_definition(k2, t2) )+
sqr(Y_definition(k, t) - s2.Y_definition(k2, t2) ) );
 return Lenght;
};
и подумайте не просятся ли int k, long double t, стать полями класса.
Yandex
Объявления
14.08.2013, 16:10     функции в классах
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru