Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/58: Рейтинг темы: голосов - 58, средняя оценка - 4.81
4 / 4 / 0
Регистрация: 13.10.2013
Сообщений: 183

Ошибка multiple definition of main при наследовании

19.09.2015, 16:18. Показов 12296. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.

Проблема описана много где в интернете , но я так и не смог понять в чём косяк у меня. Помогите разобраться.

Есть файл main.cpp

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <QApplication>
#include <QQmlApplicationEngine>
 
#include <QtGui/QGuiApplication>
#include <QUrl>
#include <QDebug>
#include <QQmlContext>
#include <QQuickItem>
#include <QQuickView>
 
//#include <QtDeclarative/QDeclarativeView>
 
#include <maincpp.h>
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
 
    /* Подключаем QML */
    QQmlApplicationEngine engine;
 
    /* Добавляем в QML объект maincpp для обработки его сигналов и слотов */
    maincpp mainCpp(&engine);
    engine.rootContext()->setContextProperty("maincpp", &mainCpp);
 
 
    //engine.load(QUrl(QStringLiteral("qrc:/forms/main.qml")));
 
    return app.exec();
}
и заголовочные файлы

maincpp.h (типа базовый класс)
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
ifndef MAINCPP_H
#define MAINCPP_H
 
/* Классы объектов */
 
#include <QQmlContext>
#include <QDesktopServices>
#include <QGuiApplication>
#include <QQmlApplicationEngine>
 
/* Классы хранения данных */
#include <QList>
#include <QQuickItem>
#include <QStringListModel>
#include <vector>
 
/* Классы обработки данных */
#include <QObject>
#include <class_process_mysql_query.h>
#include <QDebug>
 
 
 
using namespace std;
 
class maincpp : public QObject
{
    Q_OBJECT
 
public:
 
    /* Функции */
 
    explicit maincpp(QQmlApplicationEngine *engine);
 
 
 
    /* Переменные */
 
    /***      НАЧАЛЬНЫЙ ЭКРАН           ***/
 
    /* Список заказов на начальном эране */
    QVariantList dataListOrders_name;
    QVariantList dataListOrders_date;
    QVariantList dataListOrders_user;
    QVariantList dataListOrders_total;
    QVariantList dataListOrders_comment;
 
    /***      ОКНО ПРОДАЖ              ***/
 
    /* Список групп товаров с их id */
 
    QVariantList dataListGroupItemsInPrice_group_id;
    QVariantList dataListGroupItemsInPrice_group_name;
 
    /* Список товаров с их id в окне продажи для выбранной группы */
 
    QVariantList dataListItemsInPrice_item_id;
    QVariantList dataListItemsInPrice_item_name;
    QVariantList dataListItemsInPrice_item_foto;
    QVariantList dataListItemsInPrice_item_count;
    QVariantList dataListItemsInPrice_item_price;
 
    /* Список товаров в чеке с их id*/
 
    QVariantList dataListItemsInCheck_item_id;
    QVariantList dataListItemsInCheck_item_name;
    QVariantList dataListItemsInCheck_item_count;
    QVariantList dataListItemsInCheck_item_chPrice;
 
 
public slots:
 
 
    void get_dataListOrders(QObject*);
    void get_groupListAll(QObject*);
    void get_CheckListView(QObject*);
    void get_itemListAll(QObject*, QString group);
    void create_order(QObject*, QVariantList details);
    void selectItemToCheckList(QString position);
    void selectAllButton();
    void deleteAllButton();
    void hold_check(QString checkMan, QString checkComment);
    void save_bouquet(QString name, QString comment);
 
signals:
 
    void get_dataListBouquets_sig(QVariantList name, QVariantList date,QVariantList who, QVariantList total,QVariantList comment);
 
 
protected:
    QQmlApplicationEngine *viewer = new QQmlApplicationEngine;
};
 
#endif // MAINCPP_H
class_main_titleform.h

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#ifndef CLASS_MAIN_TITLEFORM_H
#define CLASS_MAIN_TITLEFORM_H
 
/* Классы объектов */
 
#include <QQmlContext>
#include <QDesktopServices>
#include <QGuiApplication>
#include <QQmlApplicationEngine>
 
/* Классы хранения данных */
#include <QList>
#include <QQuickItem>
#include <QStringListModel>
 
/* Классы обработки данных */
#include <main.cpp>
#include <class_process_mysql_query.h>
//#include <class_main_titleform_datalist.h>
#include <QDebug>
#include <vector>
 
using namespace std;
 
class Class_main_TitleForm : public maincpp
{
    Q_OBJECT
public:
 
    /* Функции */
 
explicit Class_main_TitleForm(QQmlApplicationEngine *engine);
 
    /* Переменные */
 
 
protected:
    QQmlApplicationEngine *viewer;
 
signals:
 
public slots:
};
 
#endif // CLASS_MAIN_TITLEFORM_H
class_main_titleform_datalist.h

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/* Классы объектов */
 
#include <QQmlContext>
#include <QDesktopServices>
#include <QGuiApplication>
#include <QQmlApplicationEngine>
 
/* Классы хранения данных */
#include <QList>
#include <QQuickItem>
#include <QStringListModel>
 
/* Классы обработки данных */
#include <class_main_titleform.h>
#include <class_process_mysql_query.h>
#include <QDebug>
#include <vector>
 
class Class_main_TitleForm_DataList : public Class_main_TitleForm
{
    Q_OBJECT
public:
Class_main_TitleForm_DataList(QQmlApplicationEngine *engine);
 
 
 
    /* Список букетов на начальном эране */
    QVariantList dataListBouquets_id;
    QVariantList dataListBouquets_name;
    QVariantList dataListBouquets_date;
    QVariantList dataListBouquets_user;
    QVariantList dataListBouquets_total;
    QVariantList dataListBouquets_comment;
 
public slots:
    void get_dataListBouquets(QObject*);
 
 
protected:
    QQmlApplicationEngine *viewer;
 
signals:
 
public slots:
};
 
#endif // CLASS_MAIN_TITLEFORM_DATALIST_H
При попытке запустить всё это получаю ошибку
......../main.cpp:16: ошибка: multiple definition of `main' (трижды)

Компилятор пишет следующее:

class_main_titleform_datalist.o: In function `Class_main_TitleForm::~Class_main_Title Form()':
/home/fedoseev/file_server/fedoseev_work_win/CRM_flow/flow/FlowCPP/build-Flowers-Desktop_Qt_5_5_0_GCC_64bit-Debug/../../FlowCPP/main.cpp:16: multiple definition of `main'
class_main_titleform.o:/home/fedoseev/file_server/fedoseev_work_win/CRM_flow/flow/FlowCPP/build-Flowers-Desktop_Qt_5_5_0_GCC_64bit-Debug/../../FlowCPP/main.cpp:16: first defined here
moc_class_main_titleform.o: In function `main':
/home/fedoseev/file_server/fedoseev_work_win/CRM_flow/flow/FlowCPP/build-Flowers-Desktop_Qt_5_5_0_GCC_64bit-Debug/../../FlowCPP/maincpp.h:26: multiple definition of `main'
class_main_titleform.o:/home/fedoseev/file_server/fedoseev_work_win/CRM_flow/flow/FlowCPP/build-Flowers-Desktop_Qt_5_5_0_GCC_64bit-Debug/../../FlowCPP/main.cpp:16: first defined here
moc_class_main_titleform_datalist.o: In function `Class_main_TitleForm_DataList::~Class_m ain_TitleForm_DataList()':
/home/fedoseev/file_server/fedoseev_work_win/CRM_flow/flow/FlowCPP/build-Flowers-Desktop_Qt_5_5_0_GCC_64bit-Debug/../../FlowCPP/main.cpp:16: multiple definition of `main'
class_main_titleform.o:/home/fedoseev/file_server/fedoseev_work_win/CRM_flow/flow/FlowCPP/build-Flowers-Desktop_Qt_5_5_0_GCC_64bit-Debug/../../FlowCPP/main.cpp:16: first defined here
collect2: error: ld returned 1 exit status
make: *** [Flowers] Error 1

Подскажите где я не прав пожалуйста!

Добавлено через 2 минуты
Очепятка. Нашёл, когда читал собственный пост)))
#include <main.cpp> вместо #include <maincpp.h>

Добавлено через 25 секунд
Очепятка. Нашёл, когда читал собственный пост)))
#include <main.cpp> вместо #include <maincpp.h>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.09.2015, 16:18
Ответы с готовыми решениями:

Ошибка multiple definition при сборке в QT Creator
Через консоль (c помощью g++) программа компилируется и запускается без ошибок В QT Creator не компилируется ...

Ошибка multiple definition
В строке 4 компилятор выдает ошибку &quot;multiple definition of 'fin'&quot;. Проблема в том, что в этой строке вообще нет слова fin. Объясните,...

Multiple definition при специализации функции
Кто может объяснить, почему в этом коде multiple definition для void foo&lt;Test&gt;(Test const&amp;) ? #ifndef TEST_H #define TEST_H class...

2
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
19.09.2015, 16:43
Цитата Сообщение от Kapitan79 Посмотреть сообщение
Подскажите где я не прав пожалуйста!
Вот тут:
Цитата Сообщение от Kapitan79 Посмотреть сообщение
#include <main.cpp>
0
4 / 4 / 0
Регистрация: 13.10.2013
Сообщений: 183
19.09.2015, 16:53  [ТС]
Ага, уже отписался в прошлом посте )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2015, 16:53
Помогаю со студенческими работами здесь

При сборке проекта возникает ошибка: Multiple definition
Добрый день! Пытаюсь собрать следующую программу с Github'а https://github.com/222464/NeoRL. Делаю cmake, make. Когда делаю make,...

Ошибка multiple definition
Ошибка multiple definition of `SocketTest::bytesWritten(long long)' подскажите в чем проблема #ifndef SOCKETTEST_H #define...

Ошибка multiple definition of `Start'
так объявляю этот старт, на который ругается: void **Start В конструкторе формы делаю так: Start=NULL; Как побороть данную...

CooCox. Ошибка multiple definition of `_impure_ptr
Пишу в Coosox програмульку на STM32F405. Проблема в том, что при использовании sscanf выкидает такую ошибку: d:/program...

Multiple definition ошибка, использую extern
Доброго времени суток. Столкнулся с проблемой, описанной в шапке темы. Замысел заключается в создании файла, где будут храниться все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru