Вызов глобальной функции

272
25 марта 2017, 01:38

Сразу скажу, что пишу не на обычном C++, а под микроконтроллер AVR, но я думаю, что в этом плане никаких отличий нет.
Есть файл main.cpp, в нём функция void FOO(char bar, char baz), которую нужно вызвать из класса BAT. Функция FOO не находится ни в каком классе, а функция, из которой её нужно вызвать - в классе BAT. Как это сделать?

Answer 1

А где класс BAT находится? В любом случае в месте вызова функция должна быть видима, т.е. надо либо сделать соответствующий заголовочный файл, либо добавить предварительное объявление функции. Типа:

void FOO(char, char);

После этого вызвать как любую другую свободную функцию. Например:

FOO('1', 'a');

Если вдруг в классе есть уже функция-член FOO, то чтобы вызвать глобальную нужно указать область видимости:

::FOO('1', 'a');
Answer 2

Во первых, методов в с++ нет. Во вторых, "методы", которые не принадлежат классу, называются просто функциями.

Самый простой способ решить задачу - это в файле с классом BAT сделать forward declaration - то есть, просто добавить строку с именем функции и типами (как обычно пишут в h файлах).

Более правильный способ состоит в том, что бы создать отдельные cpp/h файлы и перенести функции туда. А сам h файл добавить в оба нуждающихся файла (main и BAT).

READ ALSO
Завершение дочернего процесса QProcess

Завершение дочернего процесса QProcess

Как можно средствами Qt4 автоматически "убивать" запущенные дочерние процессы при падении основной программы? PS

215
Чтение и запись в файл c++

Чтение и запись в файл c++

Есть 2 класса, один наследуется от другого, причем базовый класс содержит хотя бы 1 виртуальный метод

294
javascript: изменить все числа в строке

javascript: изменить все числа в строке

Есть строка: Я уже 15 года занимаюсь программированием, написал 10

273
Печать страницы, Mozilla и MS Edge

Печать страницы, Mozilla и MS Edge

Сейчас мне нужно напечатать свою страницу (в pdf или на бумагу)Для этого я использую это: window

282