|
Строитель
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
||||||||||||||||||||||||||
Ошибка: error C2129: статическая функция объявлена, но не определена16.03.2017, 06:38. Показов 4935. Ответов 10
Метки нет (Все метки)
В помощь начинающим изучать C++ хочу подсказать реальную причину этой ошибки. Так как реально в интернете на форумах рассказывается какая-то ерунда по поводу того, что static дает методу работать без объявления типа. Но ошибка из-за другого…
Если у Вас есть сам метод в одном файле file.cpp:
У функции static я нашел пока два назначения: 1. Внутри класса это означает, что метод будет доступен без объявления типа переменной 2. Он служит также для определения видимости переменных и функций. Static означает, что эта функция и переменная будет видна только внутри одного файла. 1. Внутри класса:
За место static можно поставить для переменной: Для методов точно не уверен будут ли работать registr и extern. Прототип функции можно объявлять без extern - работать будут. registr – переменная будет хранится только в регистре. Позволяет не использовать оперативную память. Нужна для ускорения процессов. extern – переменная является глобальной. Помещается обычно в заголовочный файл, для того, чтобы сделать ее существующей для других файлов. Чтобы компилятор не ругался. Так как эта глобальная переменная объявляется один раз в одном cpp файле. И для каждого другого файла переменная объявляется с extern. Посмотрите мою тему по объявлению глобальных переменных. Результат работы над ошибками по поводу глобальных переменных на с++ static – переменные и методы будут видны только внутри одного файла(.cpp). На других файлах ее не существует. Именно из-за того, что новички ее используют в другом файле и чужой код копируют со значением static и потом с ужасом замечают, что код не работает. А код просто не может работать в другом файле, потому, что static делает видимость методов и переменных только для одного фала(cpp), в котором это объявлено. Это нужно, чтобы отделить методы и переменные от других фалов для уменьшения влияния переменных между файлами (ООП). Если хотите, чтобы метод был доступен в других файлах просто уберите static.
1
|
||||||||||||||||||||||||||
| 16.03.2017, 06:38 | |
|
Ответы с готовыми решениями:
10
Ошибка "Функция-член уже определена или объявлена" Cтатическая функция объявлена, но не определена Каким образом объявлена и определена функция на С |
|
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
|
||
| 16.03.2017, 07:23 | ||
|
Это ведь устаревшее. Вы книги, я так понимаю, не читаете?
0
|
||
|
Строитель
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
||
| 16.03.2017, 07:28 [ТС] | ||
|
Читаю. И как это Вы определяете, что я не читаю книги? Ну тогда постарайтесь оправдать ваши высказывания. Что-за привычка, писать коротко и интриговать!?.. Сами напишите определение по русский здесь, а не кидать на английские сайты.
0
|
||
|
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
|
||
| 16.03.2017, 07:32 | ||
|
Просто манера изложения Вашего материала такова, будто вы по крупицам собираете его на просторах Интернета.
0
|
||
|
Строитель
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
|
| 16.03.2017, 08:22 [ТС] | |
|
Для тех кто собирается создавать большие проекты с множеством фалом много чего можно подчерпнуть здесь: http://natalia.appmat.ru/C%26C%2B%2B/lezione9.php
Также описано про область видимости переменных. Написано как организовывать многофайловые коды. Именно по причине того, что много фалов взаимодействуют между собой могут возникать много ошибок у новичков. Добавлено через 2 минуты Вот главная страница этих уроков: http://natalia.appmat.ru/C&C++/
0
|
|
|
Любитель чаепитий
|
|||||||||||||||||
| 16.03.2017, 09:39 | |||||||||||||||||
![]() foo.hpp
0
|
|||||||||||||||||
|
Строитель
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
|||||||||||||||||
| 16.03.2017, 10:23 [ТС] | |||||||||||||||||
|
Для методов созданных без классов и структур, static будет работать только внутри того файла(.cpp), в котором объявлен метод. Например просто вставьте:
Просто голый метод:
0
|
|||||||||||||||||
|
Любитель чаепитий
|
||
| 16.03.2017, 10:24 | ||
|
Обычно методами называют функции-члены класса, а не свободные функции... Вы же вообще все функции гребете под понятие метода.
0
|
||
|
Строитель
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
||
| 16.03.2017, 10:38 [ТС] | ||
|
И все таки есть люди, которые пытаются называть все функции и процедуры одним словом: Метод Я не раз от людей слышал. Тут можно философию копать... А вот я не смог найти определения свободным процедурам и функциям. Тем более как назвать свободный метод, который будет в себе содержать и процедурные и функциональные процессы? Добавлено через 2 минуты Тут можно разделить мнением того, что функция возвращает результат, а процедура нет.
0
|
||
|
Любитель чаепитий
|
||
| 16.03.2017, 10:46 | ||
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 16.03.2017, 12:58 | ||
|
функции-члены классов делятся: статические функции-члены, не статические функции-члены. говорить каждый раз что-то вроде: "статическая функция-член класса..." - это как то длинно и долго. поэтому в общеупотребление вошли слэнговые понятия: метод - не статическая функция-член класса. статический метод - статическая функция-член класса. свободная функция (или фряха) - обычная функция, которая не имеет к классам никакого отношения.
3
|
||
| 16.03.2017, 12:58 | |
|
Помогаю со студенческими работами здесь
11
Ошибка...функция не определена Ошибка: функция mid не определена Ошибка fatal error LNK1561: точка входа должна быть определена ошибка:1>LINK : fatal error LNK1561: точка входа должна быть определена Предупреждение C4240. структура объявлена как private но определена как public Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|