Я схожу с ума, так как не могу определить прототип функции, которую на самом деле использую.Что я делаю, это создаю файл заголовка с именем func1.h
, где я определяю этот прототип (потому что мне нужно вызывать эту функцию из какой-то другой функции, реализованной в другом месте):
void FileVector(std::vector<Files> &,const char*,bool);
Где Files
структура, определенная в func1.cpp
struct Files{
HANDLE h;
WIN32_FIND_DATA info;
} file;
У меня также есть другая функция, которая принимает std::vector<Files> &
в качестве входного параметра, но когда я пытаюсь скомпилировать (используя Eclipse C ++), я получаю эти ошибки:
/FileVector.h:11:22: error: variable or field 'FileVector' declared void
..\/FileVector.h:11:17: error: 'vector' is not a member of 'std'
..\/FileVector.h:11:29: error: 'Files' was not declared in this scope
Я попытался включить несколько директив в заголовочный файл ... например, объявление структуры в заголовке и включение векторного заголовка делают свое дело, но так я получил множество «нескольких определений / сначала определенных здесь»" ошибка.Что я могу сделать?
РЕДАКТИРОВАТЬ
Теперь мой заголовок выглядит так:
#ifndef FILEVECTOR_H_
#define FILEVECTOR_H_
#include <vector>
#include <windows.h>
struct Files{
HANDLE h;
WIN32_FIND_DATA info;
};
void FileVector(std::vector<Files> &,const char*,bool);
#endif /* FILEVECTOR_H_ */
На данный момент мне нужно объявить еще один прототип в другом заголовке:
void ProcessInput(vector<Files>&);
но я не могу использовать тот же трюк, что и выше, потому что мне придется переопределить структуру файлов.Как я могу решить это?