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

простые функции - C++

Восстановить пароль Регистрация
 
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
29.07.2011, 17:51     простые функции #1
Всем приветик!!!
Есть код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include<iostream.h>
#include<conio.h>
#include<string.h>
 
enum Shape{prizm,parallelepiped,cube,pyramid,cone,cylinder};
 
class Body
{
    public:
  char* Name;
  Shape shape_s;
  Body(char* name,Shape s)
  {Name=new char[strlen(name)+1];
  strcpy(Name,name);
  shape_s=s;}
  ~Body()
  {delete[]Name;}
};
 
class Prizm: public Body
{
    public:
  float H;
  Prizm(char *name,Shape s,float h):Body(name,s)
  {H=h;}
};
 
class Cube: public Body
{
    public:
  float H;
  Cube(char *name,Shape s,float h):Body(name,s)
  {H=h;}
 
 const char* your_name(const Prizm& var) const
  {return var.Name;}
 friend bool Less(Cube one, Prizm two)
  {return one.H<two.H;}
};
 
int main()
{
  Prizm p("Prizma Petya",prizm,13);
  Cube c("Cube Victor",cube,12);
  if(Less(c,p))
      {cout<<c.your_name(p)<<" great."<<endl;}
  else{cout<<c.your_name(p)<<" less or equal."<<endl;}
 
  getch();
  return 0;
}
Подскажите пожалуйста почему выдает мусор и как функцию const char* your_name(const Prizm& var) const {return var.Name;} подружить с классом Prizm.
Заранее всем спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2011, 17:51     простые функции
Посмотрите здесь:

Простые числа C++
Функции (Найти все трехзначные простые числа) C++
простые числа C++
C++ Простые циклы с++
простые C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LosAngeles
Заблокирован
29.07.2011, 18:01     простые функции #2
разве можно так char* выводить? думаю он выводит указатель
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
29.07.2011, 18:03  [ТС]     простые функции #3
а как нужно?
LosAngeles
Заблокирован
29.07.2011, 18:05     простые функции #4
пользуйся string
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
29.07.2011, 19:23  [ТС]     простые функции #5
а как тогда подружить функции, можно плиз на етом коде продемонстрировать?

Добавлено через 1 час 11 минут
помогите пожалуйста
marina2
Рожденная для битвы
 Аватар для marina2
268 / 48 / 4
Регистрация: 08.11.2009
Сообщений: 1,016
29.07.2011, 19:26     простые функции #6
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
а как тогда подружить функции, можно плиз на етом коде продемонстрировать?
Какие именно?
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
29.07.2011, 19:28  [ТС]     простые функции #7
const char* your_name(const Prizm& var) const
{return var.Name;}
friend bool Less(Cube one, Prizm two)
{return one.H<two.H;}

Добавлено через 45 секунд
там некорректно работает 1-ая функция

Добавлено через 41 секунду
во второй не уверен правильно ли я сделал
marina2
Рожденная для битвы
 Аватар для marina2
268 / 48 / 4
Регистрация: 08.11.2009
Сообщений: 1,016
29.07.2011, 19:37     простые функции #8
Я не совсем догоняю, что Вы хотели сделать. Не пойму, что значит подружить функции.

Дружественные функции - это те функции, которые принадлежат обоим классам.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
29.07.2011, 19:41     простые функции #9
Цитата Сообщение от marina2 Посмотреть сообщение
Я не совсем догоняю, что Вы хотели сделать. Не пойму, что значит подружить функции.

Дружественные функции - это те функции, которые принадлежат обоим классам.
Нет. Дружественные функции - это объявленные как friend. Количество классов тут совершенно ни причем
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
29.07.2011, 19:41     простые функции #10
Цитата Сообщение от marina2 Посмотреть сообщение
Дружественные функции - это те функции, которые принадлежат обоим классам.
Они имеет доступ к закрытым полям класса, но не является явной частью класса.
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
29.07.2011, 19:42  [ТС]     простые функции #11
Морочить голову не буду вот как написано в задании:
"подружите 2 производных класса, для чего введите в один класс 2 функции и объявите их дружественными во втором. Одна из функций должна возвращать имя объекта, а другая - сравнивать высоту объектов", так вот что-то не получается у меня
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
29.07.2011, 19:45     простые функции #12
Mr. Pyatachok, подружить классы и подружить функции с классами - это несколько разные вещи.
Чтобы класс подружить, надо написать friebd clacc ИМЯ_КЛАССА; в обоих классах.
А чтобы подружить функции с классом, надо написать friend прототип_функции;
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
29.07.2011, 19:48  [ТС]     простые функции #13
повторю еще раз:
для чего введите в один класс 2 функции и объявите их дружественными во втором. Одна из функций должна возвращать имя объекта, а другая - сравнивать высоту объектов
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
29.07.2011, 20:18     простые функции #14
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
повторю еще раз:
для чего введите в один класс 2 функции и объявите их дружественными во втором. Одна из функций должна возвращать имя объекта, а другая - сравнивать высоту объектов
Блин:
C++
1
2
3
4
5
6
7
8
9
10
class A
{ public:
   std::string f1();    // -- для имени --
   double f2();          // -- для высоты --
};
class B
{  public:
    friend std::string A::f1();
    friend double A::f2();
};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2011, 21:47     простые функции
Еще ссылки по теме:

Функции. Найти все трехзначные простые числа C++
C++ Простые числа

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

Или воспользуйтесь поиском по форуму:
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
29.07.2011, 21:47  [ТС]     простые функции #15
Извините конечно, а можете у меня подправить код, пожалуйста

Добавлено через 43 минуты
Итак, слов много, но никто так и не помог

Добавлено через 11 минут
народ, 2 листа впустую, толку нет, объясните как сделать

 Комментарий модератора 
Истерику прекратите! Помог вам ValeryLaptev, а переделывать ваш код никто не нанимался. Может найдётся альтруист через час/день/месяц, а может и не найдётся...
И кстати: дружественные функции - ваша же тема. Если не в курсе:
Запрещено размещать тему в нескольких разделах одновременно (кросспостинг), а также дублировать тему в одном разделе.
Правила форума.
Yandex
Объявления
29.07.2011, 21:47     простые функции
Ответ Создать тему
Опции темы

Текущее время: 12:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru