Строитель
![]() 460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
Ошибка: error C2129: статическая функция объявлена, но не определена16.03.2017, 06:38. Показов 4395. Ответов 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татическая функция объявлена, но не определена Каким образом объявлена и определена функция на С |
![]() 1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
|
|
16.03.2017, 07:23 | 2 |
http://en.cppreference.com/w/cpp/keyword/register
Это ведь устаревшее. Вы книги, я так понимаю, не читаете?
0
|
Строитель
![]() 460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
|
16.03.2017, 07:28 [ТС] | 3 |
{deleted}
Читаю. И как это Вы определяете, что я не читаю книги? Ну тогда постарайтесь оправдать ваши высказывания. Что-за привычка, писать коротко и интриговать!?.. Сами напишите определение по русский здесь, а не кидать на английские сайты.
0
|
![]() 1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
|
|
16.03.2017, 07:32 | 4 |
Просто манера изложения Вашего материала такова, будто вы по крупицам собираете его на просторах Интернета.
Я Вам ничем не обязан, так что будет интересно - перейдёте по ссылке.
0
|
Строитель
![]() 460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
|
16.03.2017, 08:22 [ТС] | 5 |
Для тех кто собирается создавать большие проекты с множеством фалом много чего можно подчерпнуть здесь: http://natalia.appmat.ru/C%26C%2B%2B/lezione9.php
Также описано про область видимости переменных. Написано как организовывать многофайловые коды. Именно по причине того, что много фалов взаимодействуют между собой могут возникать много ошибок у новичков. Добавлено через 2 минуты Вот главная страница этих уроков: http://natalia.appmat.ru/C&C++/
0
|
Любитель чаепитий
![]() |
||||||||||||||||
16.03.2017, 09:39 | 6 | |||||||||||||||
А у меня не делает, стоит ли менять компилятор???
![]() foo.hpp
0
|
Строитель
![]() 460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
||||||||||||||||
16.03.2017, 10:23 [ТС] | 7 | |||||||||||||||
У Вас это работает в режиме 1. Указал выше. Для методов в структурах и классов - static работает для того, чтобы ваш метод был доступен без объявление типа (класса или структуры)
Для методов созданных без классов и структур, static будет работать только внутри того файла(.cpp), в котором объявлен метод. Например просто вставьте:
Просто голый метод:
0
|
Любитель чаепитий
![]() |
|
16.03.2017, 10:24 | 8 |
Вам надо бы определиться, что есть метод.
Обычно методами называют функции-члены класса, а не свободные функции... Вы же вообще все функции гребете под понятие метода.
0
|
Строитель
![]() 460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
|
16.03.2017, 10:38 [ТС] | 9 |
Жаль, что существует такое мнение. Я бы хотел, чтобы такого мнения не было. Хотя это написано в книгах по C++, но про свободные методы я не видел в книге.
И все таки есть люди, которые пытаются называть все функции и процедуры одним словом: Метод Я не раз от людей слышал. Тут можно философию копать... А вот я не смог найти определения свободным процедурам и функциям. Тем более как назвать свободный метод, который будет в себе содержать и процедурные и функциональные процессы? Добавлено через 2 минуты Тут можно разделить мнением того, что функция возвращает результат, а процедура нет.
0
|
Любитель чаепитий
![]() |
|
16.03.2017, 10:46 | 10 |
Свободными функциями я назвал обычные функции, просто чтобы они хоть как-то от функций-членов отличались. Такого понятия в реальности нет. Ну или есть, но в узких кругах.
![]()
0
|
![]() ![]() 8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
16.03.2017, 12:58 | 11 |
формально есть функции и функции-члены классов.
функции-члены классов делятся: статические функции-члены, не статические функции-члены. говорить каждый раз что-то вроде: "статическая функция-член класса..." - это как то длинно и долго. поэтому в общеупотребление вошли слэнговые понятия: метод - не статическая функция-член класса. статический метод - статическая функция-член класса. свободная функция (или фряха) - обычная функция, которая не имеет к классам никакого отношения.
3
|
16.03.2017, 12:58 | ||||||
Помогаю со студенческими работами здесь
11
Ошибка...функция не определена Ошибка: функция mid не определена Ошибка fatal error LNK1561: точка входа должна быть определена ошибка:1>LINK : fatal error LNK1561: точка входа должна быть определена Предупреждение C4240. структура объявлена как private но определена как public Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
![]() |
Новые блоги и статьи
![]() |
||||
Предотвращение XSS, CSRF и SQL-инъекций в JavaScript
run.dev 13.03.2025
JavaScript занимает первые позиции среди языков веб-разработки, но его распространенность делает его привлекательной целью для злоумышленников. Межсайтовый скриптинг (XSS), межсайтовая подделка. . .
|
PHP 8: JIT-компиляция и улучшение производительности
Jason-Webb 13.03.2025
PHP никогда не славился своей скоростью. Многие сталкивались с проблемами производительности при работе со сложными вычислениями или обработкой больших объемов данных. Традиционная модель выполнения. . .
|
Сериализация данных с Apache Avro в Kafka
Javaican 12.03.2025
Apache Kafka стала одним из ключевых решений для работы с большими потоками данных. Однако с ростом объемов передаваемых данных возникает проблема: как эффективно сериализовать и десериализовать. . .
|
Создание потребителей Kafka с помощью Reactor Kafka
Javaican 12.03.2025
Reactor Kafka — это библиотека, объединяющая Apache Kafka с реактивным программированием на базе Project Reactor. Такое сочетание позволяет строить неблокирующие, асинхронные приложения с контролем. . .
|
Ключевые слова Python
py-thonny 12.03.2025
Ключевые слова — не просто часть синтаксиса, а настоящий каркас языка, определяющий его возможности и ограничения. В Python существует 35 ключевых слов и 4 так называемых "мягких ключевых слова" —. . .
|
Сортировка в Python: Подробный обзор sorted() и .sort()
py-thonny 12.03.2025
В Python для решения задач сортировки предусмотрены два основных инструмента: функция sorted() и метод . sort(). На первый взгляд, различия между ними могут показаться незначительными, но когда дело. . .
|
Автоматизация задач в HCL Notes
Mr. Docker 12.03.2025
Если вы когда-нибудь работали с HCL Notes (раньше известным как Lotus Notes), то наверняка испытали смешанные чувства. С одной стороны, это мощная платформа для корпоративных приложений, с другой —. . .
|
Установка и настройка HCL Notes
Mr. Docker 12.03.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) — это не просто почтовый клиент, а целая корпоративная платформа для коллективной работы. Если вы когда-нибудь попадали в компанию, где все. . .
|
Разработка API GraphQL в Java
Javaican 12.03.2025
Технология GraphQL, созданная Facebook в 2012 году и выпущенная в открытый доступ в 2015, постепенно превратилась из экспериментальной альтернативы REST в один из основных подходов к созданию API.
. . .
|
Производительные API с Java и gRPC
Javaican 12.03.2025
Традиционные подходы к построению API, такие как REST, долгое время доминировали на рынке, но растущие требования к производительности, масштабируемости и надежности заставляют инженеров искать. . .
|