|
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
||||||
Вызов метода класса в другом файле, не обращаясь к самому классу16.09.2022, 16:12. Показов 1301. Ответов 13
Метки нет (Все метки)
Всех приветствую. Есть такой код:
0
|
||||||
| 16.09.2022, 16:12 | |
|
Ответы с готовыми решениями:
13
Вызов метода класса, расположенного в другом файле Groovy - Вызов в файле метода описанного в другом файле Вызов метода класса в лямбде-функции, вызываемой в другом методе этого же класса |
|
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
|
|
| 16.09.2022, 17:40 | |
|
думаю, что так
CPlainInsteadView mainclass; а дальше , через mainclass у вас есть описание класса, но нет его экземпляра в памяти
0
|
|
|
Модератор
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
|
||||||
| 16.09.2022, 17:57 | ||||||
|
метод статический. Поэтому можно его вызывать прямо от имени класса без создания экземпляра:
0
|
||||||
|
Вездепух
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,205
|
||||
| 16.09.2022, 18:33 | ||||
|
0
|
||||
|
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
|
| 16.09.2022, 18:43 [ТС] | |
|
Я его не где не вызывал,кроме того файла,где я его реализовывал,поэтому,как я понимаю,в заголовочном файле его можно было не описывать,но мне понадобилось обратиться к нему из другого файла. Я понял,что перед методом мне придётся указать имя класса. Просто я думал,что раз в реализации метода не указано CPlainInsteadView::,то его можно как-то ваызвать как обычную функцию.
0
|
|
|
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,813
|
||||||||||||||||
| 16.09.2022, 18:43 | ||||||||||||||||
0
|
||||||||||||||||
|
Вездепух
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,205
|
|||||
| 16.09.2022, 19:03 | |||||
|
Пока что мы видим обычную функцию, никакого отношения к вашему классе не имеющую. При чем здесь вообще ваш класс? static из определения функции.Еще раз: раз в реализации метода не указано CPlainInsteadView::, то это вообще НЕ метод, а обычная самостоятельная функция, никакого отношения к вашему классе не имеющая. --- Определитесь сначала, что именно вы хотите сделать. Обычную функцию или статический метод? У вас пока семь пятниц на неделе.
1
|
|||||
|
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
|
| 16.09.2022, 19:26 [ТС] | |
|
Хорошо,но вопрос,как эту функцию вписать в заголовочный файл,чтобы использовать в других файлах?
0
|
|
|
Вездепух
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,205
|
|||||||
| 16.09.2022, 19:29 | |||||||
|
Если не делать ее статическим методом класса, то вам нужно 1. Убрать ключевое слово static из реализации этой функции в .cpp файле.2. Добавить в заголовочный файл
0
|
|||||||
|
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
|
|||||||||||||||||
| 16.09.2022, 20:11 | |||||||||||||||||
0
|
|||||||||||||||||
|
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
||
| 16.09.2022, 21:57 [ТС] | ||
0
|
||
|
Вездепух
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,205
|
|||||||||||||
| 16.09.2022, 22:06 | |||||||||||||
|
Обычные функции, объявленные со словом static, имеют внутреннее связывание. Функции с внутренним связыванием невозможно вызвать напрямую, т.е. к ним невозможно прилинковаться по имени. Тем не менее вы можете вызывать такие функции из других файлов через указатель (если сумеете получить такой указатель).Например
ptr() и попадать в foo, несмотря на то, что foo обладает внутренним связыванием. Но напрямую вызвать foo из других файлов мы не можем.static имеет совершенно разные, совершенно никак друг с другом не связанные смыслы, когда оно используется с обычными функциями или с методами классов. Не нужно валить это все в одну кучу.Да, статические методы классов можно использовать где угодно.
0
|
|||||||||||||
|
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 344
|
|
| 16.09.2022, 23:10 [ТС] | |
|
Хорошо,а почему если мы объявим функцию так:
[C++] //test.h class test {... } static void fu(); [/C++] А потом реализуем её в файле test.cpp,в который мы подключим наш h файл,после чего захотим использовать в файле test1.cpp,в который тоже включим test.h,компилятор в visual studio выдаст ошибку,что,мол,статическая функция объявлена,ноне определена,но не то,что её,к примеру,нельзя использовать в других файлах.
0
|
|
|
Вездепух
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,205
|
||||||||
| 16.09.2022, 23:31 | ||||||||
Функция с внутренним связыванием является локальной в каждом файле. В каждом файле она своя и ничего не знает о функциях с таким же именем других файлах. Таким образом в вашем test1.cpp вы объявляете свою независимую, локальную, внутреннюю fu, для которой вы не предоставляете определения. Об этом вам и говорит компилятор.То есть тут нет ошибки "нельзя использовать в других файлах" просто потому что тут нет и попытки "использовать в других файлах". Такой попытки и быть не может. Поэтому и ошибки такой быть не может. Это вы у себя в голове придумали, что такой код - это якобы попытка "использовать fu в других файлах". А на самом деле нет. Компилятор это видит совсем по-другому. Компилятор видит локальную функцию без определения. И жалуется на это.
0
|
||||||||
| 16.09.2022, 23:31 | |
|
Помогаю со студенческими работами здесь
14
Вызов метода одного класса в другом классе Вызов статического метода класса в другом классе
Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода Проверка столкновений обращаясь к классу объекта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|