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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.68
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
#1

внешние функции - C++

27.01.2012, 23:27. Просмотров 3228. Ответов 18
Метки нет (Все метки)

Всем привет!

Сижу,туплю:
В задании написано: "тип данных является струкурой с необходимыми полями, а операции реализуются как внешние функции, которые получают объекты данного типа в качестве аргументов"

Так вот структура, например:
C++
1
2
3
4
5
struct Angle
{
    int degree;
    int minute;
};
Т.е. напр., внешняя функция инициализации будет так выглядеть:
C++
1
2
3
4
5
6
7
Angle Init(int d,int m)
{
    Angle angle;
    angle.degree=d;
    angle.minute=m;
    return angle;
}
Т.е я должен каждый раз создавать один и тот же объект angle? (первый вопрос)
И второй нубский вопрос: а как вызвать внешнюю функцию в main()?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2012, 23:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос внешние функции (C++):

Внешние функции в классе - C++
del

Объединять классы и внешние функции в одной программе плохой тон программирования? - C++
Доброго времени суток! Преподаватель в институте задал определённую задачу, однако не определил разрешённые возможности. Сказал только -...

Внутренние и внешние связи - C++
int externalint=5; const int j=10; int main() { } В книге написано,что переменная externalint имеет внешнюю связь,а...

Неразрешенные внешние символы/элементы - C++
появились такие ошибки error LNK1120: неразрешенных внешних элементов: 1 error LNK2019: ссылка на неразрешенный внешний символ...

Подскажите про внешние зависимости - C++
Всем привет. Никак не могу подключить к проекту внешние зависимости. Собираю консольное приложение в VS6. Прописываю пути в настройках...

Шаблоны: неразрешенные внешние элементы - C++
Пишу шаблонный класс-массив. Появилась такая проблема. Если инициализировать конструктор и дружественные перегрузки операторов в самом...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
27.01.2012, 23:31 #2
наверно имелось ввиду следующее

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
struct Angle
{
        int degree;
        int minute;
};
 
void Init(Angle& a, int deg, int min)
{
a.degree = deg;
a.minute = min;
 
};
 
 
int main()
 
{
Angle a;
Angle b;
 
Init(a,4,5); //вызовы внешней функции 
Init(b,11,3);//для разных объектов
 
 
return 0;
}
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
27.01.2012, 23:33  [ТС] #3
Извините, если Вам не смешно, у меня правильно хоть написана внешняя функция?
0
ШКІПЕР
94 / 94 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
27.01.2012, 23:34 #4
А мне кажется, что так:
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
#include <stdio.h>
#include <stdlib.h>
 
struct Angle
{
        int degree;
        int minute;
};
 
 
Angle Init(int d,int m)
{
        Angle angle;
        angle.degree=d;
        angle.minute=m;
        return angle;
}
 
int main()
{
    Angle a = Init (1, 2);
 
    return EXIT_SUCCESS;
}
1
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.01.2012, 23:37 #5
ШКІПЕР, а временный объект-то зачем создавать?
0
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
27.01.2012, 23:38 #6
C++
1
2
3
4
5
6
7
Angle Init(int d,int m)
{
        Angle angle;
        angle.degree=d;
        angle.minute=m;
        return angle;
}
в контексте твоего вопроса не совсем

а операции реализуются как внешние функции, которые получают объекты данного типа в качестве аргументов"
твоя функция создает внутри себя объект затем присваивает значения, затем это все должно быть скопировано в такой же объект и возвращено а объект из тела функции будет уничтожен.

задача вроде другая. не создавать, а именно оперировать с готовым объектом внешними функциями
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
27.01.2012, 23:39  [ТС] #7
ШКІПЕР, спасибо, а если я буду вызывать другие функции, то мне чтоли придется каждый раз содавать новый объект?
0
ШКІПЕР
94 / 94 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
27.01.2012, 23:42 #8
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
а если я буду вызывать другие функции, то мне чтоли придется каждый раз содавать новый объект?
Неудачный пример с этим Init. Если другие фунцкии, что будут изменять структуру - можна передавать адрес на нее, а не создавать заново. Все зависит от того, для чего нужна функция. (Или вопрос неправильно понял ?)
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
27.01.2012, 23:43  [ТС] #9
AzaKendler, т.е. я неправильно понял, надо было все-таки:
C++
1
2
3
4
5
6
void Init(Angle& a, int deg, int min)
{
a.degree = deg;
a.minute = min;
 
};
Хорошо, спасибо
0
ШКІПЕР
94 / 94 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
27.01.2012, 23:43 #10
Цитата Сообщение от soon Посмотреть сообщение
а временный объект-то зачем создавать?
Тогда лучше сделать так:
C++
1
Angle& a = Init (1, 2);
1
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
27.01.2012, 23:44 #11
ой вей
си стайл таков
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
BOOL angle_init (Angle* angle, int d, int m)
{
        if (!angle || d < 0 || m <0) return FALSE;
        angle->degree=d;
        angle->minute=m;
        return TRUE;
}
 
int main()
{
        Angle angle;
        angle_init (&angle, 2, 3);
        return 0;
}
1
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
27.01.2012, 23:52 #12
Mr. Pyatachok, даже не думай делать так
Цитата Сообщение от ШКІПЕР Посмотреть сообщение
C++
1
Angle& a = Init (1, 2);
1
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.01.2012, 23:55 #13
ШКІПЕР, фиг с ним, что в Си(судя по хедерам) нет ссылочного типа. Но возвращать созданный в функции объект по ссылке - это круто.
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
28.01.2012, 00:00 #14
Цитата Сообщение от soon Посмотреть сообщение
Но возвращать созданный в функции объект по ссылке - это круто.
ну тут не совсем так
оно правда даже не компилируется
1
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.01.2012, 00:09 #15
Цитата Сообщение от alex_x_x Посмотреть сообщение
ну тут не совсем так
Поясните, пожалуйста. То, что "круто" - сарказм, я надеюсь, все поняли.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2012, 00:09
Привет! Вот еще темы с ответами:

Как получить внешние параметры в ActiveX? - C++
День добрый всем! Есть у меня Activex-компонент. Он должен связываться с сервером и открывать указанный ему файл. Имя файла задаётся...

Библиотека fltk и неразрешенные внешние элементы - C++
Здравствуйте. Уже не знаю, куда обратится, пишу сюда. Извиняюсь, если вопрос не новый, но думаю что не тривиальный. Вобщем читаю книгу...

Внешние сортировки. Сортировка слиянием. Естественное слияние - C++
Пом-гите решить, заранее благодарен.)) Билет 9 1 .Внешние сортировки. Сортировка слиянием. Естественное слияние. 2 Решить...

Внешние сортировки. Сортировка слиянием. Простое слияние - C++
Пом-гите решить, заранее благодарен.)) Билет 8 1 .Внешние сортировки. Сортировка слиянием. Простое слияние. 2 Решить задачу: ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.01.2012, 00:09
Ответ Создать тему
Опции темы

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