Возможно, есть 2-секундное решение, но я пытался понять это в течение последнего часа, и это сводит меня с ума.ld возвращен 1 статус выхода с множественным определением функции
Я пытаюсь связать файлы .cpp и .h в файле main.cpp, чтобы он работал там. Но я получаю множественное определение каждой функции внутри моего файла cpp, что в причинах «ld возвратил 1 статус выхода»
Чем больше функций я добавляю, тем больше ошибок я получаю.
Вот мой код:
binaryHeap.h:
#ifndef Binary_H
#define Binary_H
#include <vector>
class BinaryHeap{
private:
std::vector <int> heap;
int left(int parent);
int right(int parent);
void heapifyUp(int index);
void heapifyDown(int index);
public:
BinaryHeap(); //Constructor
void insert(int element); //inserts element into heap
void deleteMin(); // deletes minimum element
int extractMin();
void displayHeap();
int size();
};
#endif //Binary_H
binaryHeap.cpp:
#include <iostream>
#include "binaryHeap.h"
BinaryHeap::BinaryHeap(){
}
void BinaryHeap::heapifyUp(int index){
int parent = (index - 1)/2;
if(index != 0 && parent >= 0 && heap[parent] > heap[index]){
int temp = heap[index];
heap[index] = heap[parent];
heap[parent] = temp;
heapifyUp(parent);
}
}
void BinaryHeap::insert(int element){
heap.push_back(element);
heapifyUp(heap.size() - 1);
}
void BinaryHeap::displayHeap(){
std::vector<int>::iterator pos = heap.begin();
while (pos != heap.end()){
std::cout << *pos << std::endl;
pos++;
}
}
main.cpp:
#include "binaryHeap.cpp"
int main(int argc, char* argv[]) {
BinaryHeap h;
h.insert(5);
h.insert(2);
h.insert(19);
return 0;
}
А вот ошибки:
main.o:main.cpp:(.text+0x0): multiple definition of `BinaryHeap::BinaryHeap()'
binaryHeap.o:binaryHeap.cpp:(.text+0x0): first defined here
main.o:main.cpp:(.text+0x0): multiple definition of `BinaryHeap::BinaryHeap()'
binaryHeap.o:binaryHeap.cpp:(.text+0x0): first defined here
main.o:main.cpp:(.text+0x20): multiple definition of `BinaryHeap::heapifyUp(int)'
binaryHeap.o:binaryHeap.cpp:(.text+0x20): first defined here
main.o:main.cpp:(.text+0xfe): multiple definition of `BinaryHeap::insert(int)'
binaryHeap.o:binaryHeap.cpp:(.text+0xfe): first defined here
main.o:main.cpp:(.text+0x13e): multiple definition of `BinaryHeap::displayHeap()'
binaryHeap.o:binaryHeap.cpp:(.text+0x13e): first defined here
c:/program files (x86)/dev-cpp/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/bin/ld.exe: binaryHeap.o: bad reloc address 0x0 in section `.pdata$_ZnwyPv'
collect2.exe: error: ld returned 1 exit status
C:\Users\~\Desktop\Coding Training\Binary Heap\Makefile.win:25: recipe for target '"Binary' failed
mingw32-make.exe: *** ["Binary] Error 1
Вы никогда не должны включать файл '.cpp'. В 'main.cpp', измените include на' binaryHeap.h' – CinCout