У меня есть группа объектов-указателей функций в файле заголовка С++, я включаю этот файл в основной файл заголовка, а затем пытаюсь использовать эти объекты в другом файле С++ (инициализировать указатели функций, а затем использовать эти указатели через другую часть кода), но Я всегда получаю ошибку «несколько определенных». Есть ли способ объявить объекты указателя глобальной функции в заголовочном файле?
Предварительное объявление объекта указателя функции в C++
Ответы (2)
Вы можете сделать это в своем основном заголовке. (Предполагая, что вы используете typedef под названием FnPointer)
extern FnPointer fn;
Затем в вашем файле реализации
FnPointer fn;
( extern
означает, что эта переменная будет существовать, но я собираюсь выделить для нее место позже в какой-нибудь другой единице компиляции.)
person
Michael Anderson
schedule
04.08.2011
Кажется, я забыл ключевое слово extern после многих лет кодирования на C# ))). Большое спасибо.
- person shadeglare; 04.08.2011
Просто используйте их как любые другие глобальные указатели.
- Объявите указатели функций как
extern
в одном из файлов заголовков. - Включите заголовок в один из исходных файлов, который определяет переменную &
- Включите заголовок во все исходные файлы, которые ссылаются на переменную.
Шаг 1:
file.h
extern Func_Pointer ptr1; /* Declaration of the function pointer */
Шаг 2.file.cpp
#include "file.h" /* Declaration is available through header */
/* define it here */
Func_Pointer ptr1 = //some address;
Шаг 3.someOtherfile.cpp
#include "file.h"
void doSomething(void)
{
*(ptr1)(); //Use it here
}
person
Alok Save
schedule
04.08.2011