Overloading issue with C++ object orientated code
<p>I have been working on this project and I am very close to complete but have one issue with functions saying they are overloaded - any hints would be amazing! Here is my code:</p>

<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string.h&gt;
#include &lt;algorithm&gt;
#include &lt;string&gt;
using namespace std;

class OpAmps 
{
private:
  string Name;
  unsigned int PinCount; 
  double SlewRate; 
public:
  void Enter();
  void Save();
  void Load();
  void Sort();
  void Display();

  friend bool SortName(const OpAmps &amp;, const OpAmps &amp;);
  friend bool SortSlewRate(const OpAmps &amp;, const OpAmps &amp;);
};

#define DATABASE_MAX 10
#define DATABASE_FILENAME "database.txt"

int main()
{
  OpAmps OpAmp[DATABASE_MAX]; 
  OpAmps Menu;
  unsigned long database_length = 0; 
  char UserInput;
while (1) 
{
    cout &lt;&lt; endl;
    cout &lt;&lt; "Op-amp database menu" &lt;&lt; endl;
    cout &lt;&lt; "--------------------" &lt;&lt; endl;
    cout &lt;&lt; "1. Enter a new op-amp into the database" &lt;&lt; endl;
    cout &lt;&lt; "2. Save the database to disk" &lt;&lt; endl;
    cout &lt;&lt; "3. Load the database from disk" &lt;&lt; endl;
    cout &lt;&lt; "4. Sort the database" &lt;&lt; endl;
    cout &lt;&lt; "5. Display the database" &lt;&lt; endl;
    cout &lt;&lt; "6. Exit from the program" &lt;&lt; endl &lt;&lt; endl;
    cout &lt;&lt; "Enter your option: ";

    cin &gt;&gt; UserInput;

    cout &lt;&lt; endl;

    switch(UserInput) 
    {
        case '1':
        Menu.Enter();
        break;

        case '2':
        Menu.Save();
        break;

        case '3':
        Menu.Load();
        break;

        case '4':
        Menu.Sort();
        break;

        case '5':
        Menu.Display();
        break;

        case '6':
        return 0;

        default:
        cout &lt;&lt; "Invalid entry" &lt;&lt; endl &lt;&lt; endl;
        break;
    }
}
}

void OpAmps::Enter(OpAmps&amp; Op, unsigned long&amp; database_length)
{
if (database_length == DATABASE_MAX) 
{
    cout &lt;&lt; "The database is full" &lt;&lt; endl;
}
else 
{
    cout &lt;&lt; "Add new data" &lt;&lt; endl;
    cout &lt;&lt; "------------" &lt;&lt; endl;
    cout &lt;&lt; "Enter op-amp name: ";
    cin &gt;&gt; Op.Name;
    cout &lt;&lt; "Enter number of pins: ";
    cin &gt;&gt; Op.PinCount;
    cout &lt;&lt; "Enter slew rate: ";
    cin &gt;&gt; Op.SlewRate;
    cout &lt;&lt; endl;
    database_length++;
}
}

void OpAmps::Save(const OpAmps* Op, unsigned long database_length)
{
fstream output_file;
output_file.open(DATABASE_FILENAME, ios::out);
if(output_file.good()) 
{
    output_file &lt;&lt; database_length &lt;&lt; endl &lt;&lt; endl;
    for (unsigned long i=0;i&lt;database_length;i++) 
    {
        output_file &lt;&lt; Op[i].Name &lt;&lt; endl;
        output_file &lt;&lt; Op[i].PinCount &lt;&lt; endl;
        output_file &lt;&lt; Op[i].SlewRate &lt;&lt; endl &lt;&lt; endl;
    }
}
output_file.close();
}

void OpAmps::Load(OpAmps* Op, unsigned long&amp; database_length)
{
fstream input_file; 
input_file.open(DATABASE_FILENAME, ios::in);
if(input_file.good()) 
{
    input_file &gt;&gt; database_length;
    for (unsigned long i=0;i&lt;database_length;i++) 
    {
        input_file &gt;&gt; Op[i].Name;
        input_file &gt;&gt; Op[i].PinCount;
        input_file &gt;&gt; Op[i].SlewRate;
    }
}
input_file.close();
}

void OpAmps::Sort(OpAmps* Op, unsigned long database_length)
{
char UserInput;
cout &lt;&lt; endl;
cout &lt;&lt; "Sorting options" &lt;&lt; endl;
cout &lt;&lt; "---------------" &lt;&lt; endl;
cout &lt;&lt; "1. To sort by name" &lt;&lt; endl;
cout &lt;&lt; "2. To sort by slew rate" &lt;&lt; endl;
cout &lt;&lt; "3. No sorting" &lt;&lt; endl &lt;&lt; endl;
cout &lt;&lt; "Enter your option: ";
cin &gt;&gt; UserInput;
cout &lt;&lt; endl;
switch(UserInput) 
{
    case '1':
    cout&lt;&lt;"sortName"&lt;&lt;endl;
    std::sort(Op, Op + database_length, SortName);
    break;

    case '2':
    cout&lt;&lt;"sortslew"&lt;&lt;endl;
    std::sort(Op,Op + database_length, SortSlewRate);
    break;

    case '3':
    return;
    default:
    cout &lt;&lt; "Invalid entry" &lt;&lt; endl &lt;&lt; endl;
    break;
}
}

bool SortName(const OpAmps &amp;First, const OpAmps &amp;Second)
{
  return First.Name &lt; Second.Name;
}

bool SortSlewRate (const OpAmps &amp;First, const OpAmps &amp;Second)
{
  return First.SlewRate &lt; Second.SlewRate;
}

void OpAmps::Display(const OpAmps* Op, unsigned long database_length)
{
if (database_length == 0) 
{
    cout &lt;&lt; "No elements in the database" &lt;&lt; endl;
}
else 
{
    cout &lt;&lt; endl;
    for (unsigned long i=0;i&lt;database_length;i++) 
    {
        cout &lt;&lt; "Name: " &lt;&lt; Op[i].Name &lt;&lt;endl;
        cout &lt;&lt; "Number of Pins: " &lt;&lt; Op[i].PinCount &lt;&lt; endl;
        cout &lt;&lt; "Slew Rate: " &lt;&lt; Op[i].SlewRate &lt;&lt; endl;
        cout &lt;&lt; endl;
    }
}
}
</code></pre>

<p>The errors I am getting are:</p>

<pre><code>error C2511: 'void OpAmps::Enter(OpAmps &amp;,unsigned long &amp;)' : overloaded member     function not found in 'OpAmps'

see declaration of 'OpAmps'

error C2511: 'void OpAmps::Save(const OpAmps *,unsigned long)' : overloaded member function not found in 'OpAmps'

see declaration of 'OpAmps'

error C2511: 'void OpAmps::Load(OpAmps *,unsigned long &amp;)' : overloaded member function not found in 'OpAmps'

see declaration of 'OpAmps'

error C2511: 'void OpAmps::Sort(OpAmps *,unsigned long)' : overloaded member function not found in 'OpAmps'

see declaration of 'OpAmps'

error C2511: 'void OpAmps::Display(const OpAmps *,unsigned long)' : overloaded member function not found in 'OpAmps'

see declaration of 'OpAmps'
</code></pre>

<p>Any help would be amazing!!
Thanks xx</p>
