У меня проблема с включением векторного модуля. Кажется, есть конфликт с другими модулями. Вот структура:
В имитации.h:
#pragma once
#ifndef SIMULATION
#define SIMULATION
#include <ostream>
#include <sstream>
#include <string>
#include <algorithm>
#include <cstdlib>
// #include <vector>
#include "File.h"...
void afficherResultat(std::vector<Client> sortie);
...
#endif
И файл File.h:
#pragma once
#ifndef FILE
#define FILE
#include <vector>
class File {
...
std::vector<Client> l;
...
};
#endif
И я получаю 108 ошибок, начиная с: предупреждение C4091 и ошибки C4430, C2065, C4229 …
Некоторые люди обращают внимание на порядок включений. Есть идеи ?
Вы определяете макрос для идентификатора, который является частью стандартной библиотеки:
#define FILE
(увидеть https://en.cppreference.com/w/cpp/io/c#Types для чего FILE
является).
Это запрещено и может привести к очень странным ошибкам.
Вместо этого используйте имена, которые настолько уникальны, насколько это возможно, например, включают охранников, например INCLUDE_GUARD_FILE_H
,
Если у вас есть охранник включения, нет необходимости #pragma once
что является нестандартным способом решения проблемы двойного включения, которую также должен предотвращать включающий охранник.
Кроме того, вы не заявили Client
в File.h
, Вероятно, некоторые #include
для определения заголовочного файла Client
пропал, отсутствует.
Других решений пока нет …