I have searched through the internet for this error, but did not find anything to help me. I received this error "linker command failed with exit code 1" and when I tried an online compiler, I have received this:
main.cpp:(.text.startup+0x121): undefined reference to `Sorting::Sorting()' collect2: error: ld returned 1 exit status
Can someone please help me out?
#include <iostream>
#include <vector>
class Sorting
{
public:
Sorting();
std::vector<int> Sort(std::vector<int> mainArray)
{
auto mainArray_Size = mainArray.size();
//if(mainArray_Size < 2) { return ; }
int middle = mainArray_Size / 2;
std::vector<int> left(middle);
std::vector<int> right (mainArray_Size - middle);
//std::vector<int>::iterator iter;
// Split in half.
for(auto iter = mainArray.begin(); iter < left.end(); ++iter)
{
left.push_back(*iter);
}
// Start at middle of vector.
for(auto iter = mainArray.begin() + mainArray.size() / 2; iter != mainArray.end(); ++iter)
{
right.push_back(*iter);
}
Sort(left);
Sort(right);
Merge(left, right, mainArray);
return mainArray;
}
void Merge(std::vector<int> firstHalf, std::vector<int> secondHalf, std::vector<int> mainVector)
{
auto firstHalf_Size = firstHalf.size();
auto secondHalf_Size = secondHalf.size();
std::vector<int>::iterator iter_FirstHalf = firstHalf.begin();
std::vector<int>::iterator iter_SecondHalf = secondHalf.begin();
// May not reach the end of the vector.
while(firstHalf.begin() != firstHalf.end() && secondHalf.begin() != secondHalf.end())
{
if(*iter_FirstHalf <= *iter_SecondHalf)
{
mainVector.push_back(*iter_FirstHalf);
++iter_FirstHalf;
}
else
{
mainVector.push_back(*iter_SecondHalf);
++iter_SecondHalf;
}
}
// Any leftovers.
while(iter_FirstHalf != firstHalf.end())
{
mainVector.push_back(*iter_FirstHalf);
++iter_FirstHalf;
}
while(iter_SecondHalf != secondHalf.end())
{
mainVector.push_back(*iter_SecondHalf);
++iter_SecondHalf;
}
}
};
int main(int argc, const char * argv[]) {
std::vector<int> sortThis;
sortThis.push_back(4);
sortThis.push_back(1);
sortThis.push_back(2);
sortThis.push_back(8);
sortThis.push_back(3);
sortThis.push_back(4);
sortThis.push_back(9);
sortThis.push_back(10);
for(auto iter = sortThis.begin(); iter != sortThis.end(); ++iter)
{
std::cout << *iter << " ";
}
std::cout << std::endl;
Sorting sort;
sort.Sort(sortThis);
for(auto iter = sortThis.begin(); iter != sortThis.end(); ++iter)
{
std::cout << *iter << " ";
}
return 0;
};