Конфликт модуля включения вектора Переполнение стека

У меня проблема с включением векторного модуля. Кажется, есть конфликт с другими модулями. Вот структура:

В имитации.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 …
Некоторые люди обращают внимание на порядок включений. Есть идеи ?

-2

Решение

Вы определяете макрос для идентификатора, который является частью стандартной библиотеки:

#define FILE

(увидеть https://en.cppreference.com/w/cpp/io/c#Types для чего FILE является).

Это запрещено и может привести к очень странным ошибкам.

Вместо этого используйте имена, которые настолько уникальны, насколько это возможно, например, включают охранников, например INCLUDE_GUARD_FILE_H,

Если у вас есть охранник включения, нет необходимости #pragma once что является нестандартным способом решения проблемы двойного включения, которую также должен предотвращать включающий охранник.

Кроме того, вы не заявили Client в File.h, Вероятно, некоторые #include для определения заголовочного файла Client пропал, отсутствует.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]