Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
LolinaZzZ
0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 21
1

Ошибка LNK2005 в многофайловом проекте

18.01.2019, 09:18. Просмотров 236. Ответов 3

Появилась такая проблема ,выдает ошибку LNK2005 при компиляции программы,вроде сделано все правильно прототипы в .h,а реализация в .cpp , вызаваю функции из главного.cpp файла. Подскажите,что не так ? и еще он на #endif ругается,но если поставить #if 1 ругаться перестает,но стоит ли использовать #if 1 ?
вот программный код по 3 файлам:
*.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once
#if 1
#include <iostream>
#include <string>
#include <map>
#include <set>
 
using std::string;
using std::cout;
using std::cin;
using namespace std;
 
class MyClass {
public:
    void Create_tram(map<int, set<string>> &m);
    void trams(map<int, set<string>> &m);
    void Trams_in_stop(map<int, set<string>> &m, string s);
    void Stops_in_tram(map<int, set<string>> &m, int n);
};
#endif
*.cpp
C++
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
#include "pch.h"
#include <iostream>
#include <string>
#include <map>
#include <set>
#include "Source.h"
 
 
using namespace std;
using std::string;
using std::cout;
using std::cin;
 
 
void MyClass::Create_tram(map<int, set<string>>& m)
{
    int i, n, k;
    string s;
    cout << "Enter the nimber of tramstops: " << endl;
    cin >> k;
    cout << "Enter the number of tram: " << endl;
    cin >> n;
    for (i = 0; i < k; i++) {
        cout << "Enter tne name of tramstop:" << endl;
        cin >> s;
        m[n].insert(s);
    }
}
 
void MyClass::trams(map<int, set<string>>& m)
{
    for (const auto &i : m) {
        cout << "Number of tram: " << i.first << endl;
        cout << "Tramstops: ";
        for (const auto &el : m[i.first]) {
            cout << el << " ";
        }
        cout << "\n--------------------------------------------------\n";
    }
}
 
void MyClass::Trams_in_stop(map<int, set<string>>& m, string s)
{
    for (const auto &i : m) {
        for (const auto &el : m[i.first]) {
            if (el == s) {
                cout << "Number of tram: " << i.first << endl;
            }
        }
    }
}
 
void MyClass::Stops_in_tram(map<int, set<string>>& m, int n)
{
    for (const auto &i : m) {
        if (i.first == n) {
            cout << "Tramstops: ";
            for (const auto &el : m[i.first]) {
                cout << el << " ";
            }
        }
    }
}
и main.cpp
C++
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
96
97
98
99
100
101
102
#include "pch.h"
#include <iostream>
#include <string>
#include <map>
#include <set>
#include "Source.h"
#include "Source.cpp"
 
using std::string;
using std::cout;
using std::cin;
using namespace std;
 
enum class type {
    CREATE_TRAM = 1,
    TRAMS_IN_STOP = 2,
    STOPS_IN_TRAM = 3,
    TRAMS = 4
};
 
int status;
void Menu() {
    cout << "          Меню\n"
        << "(0) Выйти из программы. \n"
        << "(1) Создать трамвай.\n"
        << "(2) Вывод трамваев, проходящих через остановку.\n"
        << "(3) Вывод остановок указанного трамвая.\n"
        << "(4) Вывод всех трамваев.\n";
 
    cin >> status;
}
 
int main()
{
    MyClass tram;
    
    map<int, set<string>> m;
    Menu();
    while (status != 0) {
        auto status_enum = static_cast<type>(status);//явное преобразование int в type
        switch (status_enum)
        {
        case type::CREATE_TRAM: {//создание трамвая
            system("cls");
 
            tram.Create_tram(m);
 
            system("pause");
            system("cls");
            Menu();
        }
                                break;
        case type::TRAMS_IN_STOP: {//поиск трамваев для данной остановки
            system("cls");
 
            string s;
            cout << "Enter the name of tramstop:" << endl;
            cin >> s;
            tram.Trams_in_stop(m, s);
 
            system("pause");
            system("cls");
            Menu();
        }
                                  break;
        case type::STOPS_IN_TRAM: {//вывод остановок данного трамвая
            system("cls");
 
            int n;
            cout << "Enter the number of tram:" << endl;
            cin >> n;
            tram.Stops_in_tram(m, n);
 
            system("pause");
            system("cls");
            Menu();
        }
                                  break;
        case type::TRAMS: {//вывод всех трамваев
            system("cls");
 
            tram.trams(m);
 
            system("pause");
            system("cls");
            Menu();
        }
                          break;
        default:
            cout << "Invalid mode" << endl;
 
            system("pause");
            system("cls");
            Menu();
            break;
        }
    }
    system("cls");
    cout << "The end of work\n";
    system("pause");
 
}
Прошу,пожалуйста,помогите
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2019, 09:18
Ответы с готовыми решениями:

Ошибка LNK2019 в многофайловом проекте
Смысл: Мне нужно создать абстрактный класс контейнер, на его основе конкретные классы, далее...

Ошибка линковки в многофайловом проекте
что за на??? в проекте 3 модуля: main.cpp, test.cpp, test.h, в main.cpp и test.cpp подключен...

Ошибка при работе с шаблонами в многофайловом проекте
Цель проста - пишу класс очереди, используя шаблоны. Возниает следующая ошибка: ||=== Build: Debug...

Перегрузка << в многофайловом проекте
Чтобы узнать, как перегружать потоки, зашел на msdn, нашел там это: #include &lt;iostream&gt; using...

Ошибки в многофайловом проекте
Здравствуйте! У меня есть многофайловый проект. Он не закончен (только начатый), но запуск...

3
_stanislav
(50 / 50 || 80 / 20) ?
770 / 622 / 262
Регистрация: 16.08.2014
Сообщений: 2,627
Завершенные тесты: 2
18.01.2019, 09:40 2
Цитата Сообщение от LolinaZzZ Посмотреть сообщение
#include "Source.cpp"
на первый взгляд это не надо в main.cpp

Добавлено через 2 минуты
Цитата Сообщение от LolinaZzZ Посмотреть сообщение
и еще он на #endif ругается,но если поставить #if 1 ругаться
что ругаться, перестает?

Добавлено через 4 минуты
до директивы #endif всегда должна быть директива #if
C++
1
2
3
4
5
6
7
#if 1 // если истина или 1 то препроцессор разбирает то что внутри #if ... #endif
int i = 10;
#endif
 
#if 0 // если ложь или 0 то препроцессор пропускает то что внутри #if ... #endif
int i = 10;
#endif
0
LolinaZzZ
0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 21
18.01.2019, 09:49  [ТС] 3
_stanislav,да,перестает ругаться,ошибочка вышла,просто есть еще такие вещи как #ifndef и #define ,для чего они нужны ?

Как оказалось,в этом и была ошибка,еще учиться и учиться,да и внимательнее быть не помешает
0
_stanislav
(50 / 50 || 80 / 20) ?
770 / 622 / 262
Регистрация: 16.08.2014
Сообщений: 2,627
Завершенные тесты: 2
18.01.2019, 09:56 4
Цитата Сообщение от LolinaZzZ Посмотреть сообщение
для чего они нужны ?
C++
1
2
3
4
#ifndef BLABLABLA // если BLABLABLA не определен
#define BLABLABLA // определить BLABLABLA
...
#endif
это используется для include guards.
0
18.01.2019, 09:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2019, 09:56

Struct в многофайловом проекте
Если в main файле создать структуру, то как её использовать в функциях, которые в других cpp...

Вызов функции в многофайловом проекте
Компилятор ругается на указатель на массив &quot;a&quot; , в файле main.cpp Вот файлы проекта: ...

Иерархия классов в многофайловом проекте
Всем привет. Есть проблема с созданием программы. Должна быть небольшая иерархия классов, и все...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru