Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1

Свободные функции в С++!!!

21.12.2009, 21:56. Показов 4441. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сразу оговорюсь что С++ только осваиваю......до этого програмировал на Delphi;
Можно ли написать функцию не относящуюся ни к одному из классов и использовать ее в другом модуле?
например:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
unit U2;
 
interface
 
Function SUMMA(a,b:integer):integer;
Function Raznost(a,b:integer):integer;
 
 
implementation
 
 
Function SUMMA(a,b:integer):integer;
begin
result:= a+b;
end;
 
Function Raznost(a,b:integer):integer;
begin
result:=a-b;
end;
 
end.
а как в С++ тоже сделать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//---------------------------------------------------------------------------
 
 
#pragma hdrstop
 
#include "U2.h"
 
//---------------------------------------------------------------------------
 
#pragma package(smart_init)
 
int SUMMA(int a,b)
{
return a+b;
}


так возвращает: E2303 Type name expected
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2009, 21:56
Ответы с готовыми решениями:

not() и свободные переменные
Есть предикат br_sist(родственник1, родственник2), который отвечает за связь - являются ли два человека братом или сестрой. Необходимо в...

Свободные проекты
Люди, кому какие рисунки, чертежи, 3D-модели не жалко скидывайте в тему, очень просто нужны новые идеи,для игры. Ну типа неудачные рисунки,...

Свободные номера
Помогите реализовать запрос на выборку свободных номеров, пожалуйста. Уже долго бьюсь, ничего не получается. Вот что смог: SELECT * ...

15
 Аватар для VorteX
172 / 96 / 12
Регистрация: 29.05.2009
Сообщений: 341
21.12.2009, 22:03
не
C++
1
2
3
4
int SUMMA(int a,b)
{
return a+b;
}
а
C++
1
2
3
4
void SUMMA(int a, int b)
{
 a+b;
}
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
21.12.2009, 22:07  [ТС]
Falen, ты хоть понял что написал?
мне нужно чтобы функция возвращала результат, а у иебя она ничего не возвращает, да и суть проблемы от этого не исчезла!!!
0
 Аватар для VorteX
172 / 96 / 12
Регистрация: 29.05.2009
Сообщений: 341
21.12.2009, 22:13
C++
1
2
3
4
void SUMMA(int a, int b)
{int c;
 c=a+b;
}
Так нельзя сделать?
Я дал понять что пишеться не int, а void, а дальше крути верти как тебе нужно
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
21.12.2009, 22:15  [ТС]
и что будет если я напишу
int d=SUMMA(10+20);?????????????

и вообще VOID перед именем означает что функция не возвращает параметра, в Delphi это procedure

помогите мне по сути, "Falen" а ты вообще что то левое пишеш, ты по моему в С++ еще мельче меня плаваешь!!! (БЕЗ ОБИД)
0
 Аватар для VorteX
172 / 96 / 12
Регистрация: 29.05.2009
Сообщений: 341
21.12.2009, 22:27
C++
1
2
3
int d;
int sum(int a, int b) {return a+b;}
d=sum(2,3);
Без обид, но это вы что-то тупите=) Вы писали уже правельнов сами в начале темы. Что вы еще хотите, сами ответили же на свой вопрос.
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
21.12.2009, 22:32  [ТС]
Falen, вопрос состоит в том как написать функцию (любую, но не из какого либо класса) в отдельном модуле.........
если в модуле описываю класс, все хорошо, но на свободную функцию кампилятор ругается, Type name expected сто в переводе на русский означает: Ожидается определение типа!!!
0
 Аватар для VorteX
172 / 96 / 12
Регистрация: 29.05.2009
Сообщений: 341
21.12.2009, 22:37
Тут я помоч не могу=) Я в билдере 6 работаю, там на свободные функции компилятор не ругаеться, притом вообще.

P.S. Не делайте поспешных выводов при высказваниях. Я новичок, самоучка, и если в чем-то ошибаюсь и т.д., это не повод выражаться.
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
21.12.2009, 22:42  [ТС]
Цитата Сообщение от Falen Посмотреть сообщение
Тут я помоч не могу=) Я в билдере 6 работаю, там на свободные функции компилятор не ругаеться, притом вообще.
Люди кто знает в чем дело, у меня С++ Builder 2009? неужели придется к старому вернуться?
0
 Аватар для VorteX
172 / 96 / 12
Регистрация: 29.05.2009
Сообщений: 341
21.12.2009, 23:03
Если вы неошиблись с кодом, то это ченить с компилятором. Если мне не изменяет память уже была похожая тема, и проблема не была решена. Точно такая же ошибка была.

Добавлено через 12 минут
В *.h объявите функцию в public. Может заработает... Просто в 6 билдере этого делать не нада, в 2009 может сработает.
C++
1
public: int sum(int a, int b);
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
21.12.2009, 23:52  [ТС]
1 public: int sum(int a, int b);
ругается, пишет ошибка дикларации функции!


чувствую придется впомнить старые версии, а тах хотелось ХP интерфейсом пользоваться!!!
0
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,306
22.12.2009, 03:53
Если я правильно понял, то требуется оформить функции в отдельном файле, чтобы его можно было подключать к другим проектам. Тогда создаем файл с расширением h, myfunc.h, записываем в него прототипы и описания функций. В файле с функцией main пишем #include "myfunc.h". Не знаю как для 2009, а для 6 билдера еще надо клацнуть Edit->Add to project..., и выбрать хидер со своми функциями.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
22.12.2009, 05:01
В файле с расширением f.h:
C++
1
int SUMMA(int a,b);
В файле с расширением f.c:
C++
1
2
3
4
int SUMMA(int a,b)
{
 return a+b;
}
Далее во всех модулях (включая f) пиши:
C++
1
#include "f.h"
0
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,306
22.12.2009, 06:17
Компилятор игнорирует имена переменных в прототипах функций, поэтому надо писать
C++
1
int SUMMA(int a, int b);
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
22.12.2009, 06:24
Можно и так:
C++
1
int SUMMA(int, int);
но не обязательно. Указывая имена в прототипе, можно сделать их смысловыми (конечно не для двух слагаемых, а там, где порядок имеет значение) и использовать такой прототип как подсказку для себя по назначению параметров, то есть прототип может быть самодокументированным. А прототип, в котором указаны только типы, таким быть не может. Но это вопрос выбора. Я указываю имена параметров во всех прототипах, даже если они и не несут смысловой нагрузки, ты можешь делать наоборот, а когда надо прикручивай к прототипу комментарий.
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
22.12.2009, 12:23  [ТС]
спасибо, но дальше больше.........
типы byte и cardinal в модулях
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.12.2009, 12:23
Помогаю со студенческими работами здесь

Получить свободные ip адреса
В listbox1 есть список ip адресов сети формата: 10.57.5.1 и до 255 В этом списке только активные (доступные) IP адреса. Как мне при...

Свободные билета в автовокзале
Здравствуйте уважаемые программисты. Вопрос такой. Как вывести свободные места? (1С.предприятние 8.2)

Запрос свободные водители
Имеются таблицы Водители (ФИО, №_ВУ) и График (№_ВУ, Дата). Как сделать запрос, который покажет какие водители свободны в текущем месяце,...

Вывести свободные классы
Всем привет. Есть 4 таблицы 1)classrooms - классы 2) groups - группы 3)times - время 4)durations - продолжительность 1) classrooms...

Свободные массивы строк
Из заданного текста удалить слова, множества символов которых равны.


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru