С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 6
1

Ошибка передачи структуры в функцию

08.12.2019, 20:31. Показов 599. Ответов 8

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста
Прописал в заголовочном файле прототип функции для объединения списков, в отдельном cpp файле прописал саму функцию
В функцию надо передать два списка, и, по всей видимости (List& L1, List& L2) не работает
Структуру списка объявляю в хэдере, но он тоже подключён к файлу с функцией, так что не могу понять почему выдаёт ошибку

Вот код
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
103
104
#ifndef FUNC1_H
#define FUNC1_H
 
 
#include <iostream> 
#include <fstream>
#include "func1.cpp"
using namespace std;
 
typedef double TE;
 
 
struct Node{
    public:
        Node *pNext;
        TE data;
        Node(TE data = TE(), Node *pNext = nullptr){
        this->data = data;
        this->pNext = pNext;
    }
 
};
 
struct List{
    public:
        List();
        ~List();
        void push_back(TE data);
        int GetSize(){return Size;}
        TE& operator[](const int index);
        Node *operator()(const int index);
        Node *pNext(const int index);
        int Size;
        Node *head;
        
};
 
 
List::List(){
    Size = 0;
    head = nullptr;
}
 
 
List::~List(){
    
}
 
 
void List::push_back(TE data){
    if(head == nullptr){
        head = new Node(data);
    }
    else{
        Node *current = this->head;
        while(current->pNext != nullptr){
            current = current->pNext;
        }
        current->pNext = new Node(data);
    }
    Size++;
}
    
 
Node* List::operator()(const int index){    
    Node *current = this -> head;
    int counter = 0;
    while(current!=nullptr){
        if(counter == index){
            return current;
        }
        current = current->pNext;
        counter++;
    }
}
 
Node* List::pNext(const int index){ 
    Node *current = this -> head;
    int counter = 0;
    while(current!=nullptr){
        if(counter == index){
            return current->pNext;
        }
        current = current->pNext;
        counter++;
    }
}
 
TE& List::operator[](const int index){  
    Node *current = this -> head;
    int counter = 0;
    while(current!=nullptr){
        if(counter == index){
            return current->data;
        }
        current = current->pNext;
        counter++;
    }
}
 
 
int merge(List& L1, List& L2);
 
#endif
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
#include "func1.h"
#include "func1.cpp"
 
int main(){
    List L1;
    List L2;
    int k;
    cout << "How much nodes do you need in L1? ";
    cin >> k;
    for(int i=0; i<k;i++){
        double l;
        cout << "Enter L1: ";
        cin >> l;
        L1.push_back(l);
    }
    cout << "How much nodes do you need in L2? ";
    cin >> k;
    for(int i=0; i<k;i++){
        double l;
        cout << "Enter L2: ";
        cin >> l;
        L2.push_back(l);
    }
    merge(L1,L2);
    for(int i=0; i < L1.Size; i++){
        cout << L1[i] << endl;
    }
    ofstream file("file.txt");
    for (int i=0; i < L1.Size; i++){
        file << L1[i] << " ";
    }
    return 0;
}
C++
1
2
3
4
5
6
7
#include "func1.h"
 
using namespace std;
 
int merge(List& L1, List& L2){
    return 0;
}
Вот ошибки
'List' was not declared in this scope
'L1' was not declared in this scope
'List' was not declared in this scope
'L2' was not declared in this scope
expression list treated as compound expression in initializer [-fpermissive]
expected ',' or ';' before '{' token
'int merge(List&, List&)' redeclared as different kind of symbol
previous declaration of 'int merge'
'merge' cannot be used as a function
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2019, 20:31
Ответы с готовыми решениями:

Ошибка передачи параметра в функцию
#include &quot;stdafx.h&quot; #include &quot;War.h&quot; int _tmain(int argc, _TCHAR* argv) { War...

В чем ошибка при передачи статического массива в функцию
Не кидайте камни за использование глобальных переменных и статических двумерных массивов. Вроде...

В чем разница между способами передачи структуры в функцию?
Доброго времени суток. Заинтересовывал вот такой вопрос, а именно в чем разница между способами...

Ошибка передачи массива в функцию
Доброго времени суток. Есть массив и функция,в которой этот массив используется. В 14 строке...

8
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
08.12.2019, 20:42 2
Цитата Сообщение от Mirinum Посмотреть сообщение
#include "func1.cpp"
Убери это, как минимум из заголовка, а лучше отовсюду
1
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 6
08.12.2019, 20:49  [ТС] 3
Но мне по заданию нужно вынести функцию в отдельный cpp файл
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
08.12.2019, 20:50 4
Цитата Сообщение от Mirinum Посмотреть сообщение
Но мне по заданию нужно вынести функцию в отдельный cpp файл
Файл оставь, а include убери.
0
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 6
08.12.2019, 20:51  [ТС] 5
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Файл оставь, а include убери.
Разве оно так эти два файла вместе скомпилирует?
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
08.12.2019, 20:54 6
Цитата Сообщение от Mirinum Посмотреть сообщение
Разве оно так эти два файла вместе скомпилирует?
Для начала просто попробуй скомпилировать.
Ты в visual studii работаешь? В проекте оба cpp-файла есть, в solution explorer?
0
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 6
08.12.2019, 21:07  [ТС] 7
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Ты в visual studii работаешь?
Нет, я в C++Dev пишу
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
08.12.2019, 21:12 8
Цитата Сообщение от Mirinum Посмотреть сообщение
Нет, я в C++Dev пишу
Ну, надо, чтоб второй cpp тоже был включен в проект или что там у тебя. Инклудить его не нужно.
1
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 6
08.12.2019, 21:38  [ТС] 9
Понял, спасибо
0
08.12.2019, 21:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2019, 21:38
Помогаю со студенческими работами здесь

Передачи структуры и функция структуры
Здравствуйте, у меня такое задание Есть некая структура struct MySettings { int a; int...

Передача указателя структуры в функцию, ошибка на этапе выполнения
Помогите разобратся в чем ошибка. Ошибка вылетает на этапе выполнения. struct book { char *...

Способ передачи вложенной структуры JNI
Создана простая демо структура. файл RECT.java public class RECT { long left; long...

До передачи элементы структуры отображаются правильно, а после - нет
Вот получился такой код. Выводов напихано, чтобы найти ошибку. #include &lt;stdio.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru