@aselockd

В чем причина данной ошибки?

[nightmare@nightmare-4061w1c rossijskij-yap]$ ./Построить.sh 
сборка ВыражениеParser.cpp
In file included from ВыражениеVisitor.h:8,
                 from ВыражениеParser.cpp:6:
ВыражениеParser.h:15:8: ошибка: повторное определение «class парсер::ВыражениеParser»
   15 | class  ВыражениеParser : public antlr4::Parser {
      |        ^~~~~~~~~~~~~~~
In file included from ВыражениеListener.h:8:
ВыражениеParser.h:13:8: замечание: предыдущее определение «class парсер::ВыражениеParser»
   13 | 
      |        ^                       
[nightmare@nightmare-4061w1c rossijskij-yap]$


В чем ошибка?
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Компилятор же вам сказал, даже по русски написал:
ошибка: повторное определение


У вас 2 раза определен class парсер::ВыражениеParser.

Компилятор даже указал на оба определения: они оба в файле ВыражениеParser.h, но включенного 2 раза из разных исходников:
In file included from ВыражениеVisitor.h:8,
                 from ВыражениеParser.cpp:6:
ВыражениеParser.h:15:8: ошибка: повторное определение «class парсер::ВыражениеParser»
...
In file included from ВыражениеListener.h:8:
ВыражениеParser.h:13:8: замечание: предыдущее определение «class парсер::ВыражениеParser»


Пока похоже, что вы там намудрили с include-guard'ами из-за чего один и тот же хедер включается несколько раз. Выкладывайте начало файла ВыражениеParser.h.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы