Link to home
Start Free TrialLog in
Avatar of TCOesterle
TCOesterle

asked on

Problems with returning values, using dereferencing...error C2556 error C2371

I had to write a program for class that requires sending variables by dereferencing, and returning a value through two functions.
I apologize for the lack of documentation.
Please help me!

All headers included in ptrphead.h.

#include "ptrphead.h"

void ValueF();
double GenerateF(double &NumberV);
double DivideF(double &NumberV, double Divisor);

void Halt();
void ClearS();

void ValueF()
{
     double NumberV;
     double *NumPtr = &NumberV;
     double Manipulated;

     ClearS();

     cout << "Please enter a number\n\t>";
     cin >> *NumPtr;

     cout << "\n\n";
     cout << "Original:\t" << NumberV << "\n";

//     GenerateF(NumberV);

     Manipulated = GenerateF(NumberV);

     cout << Manipulated;

     return;

}

double GenerateF(double &NumberV)
{
     double Divisor;
     double *DivPtr = &Divisor;
     double Manipulated;

     srand(static_cast<unsigned>(time(NULL)));

     *DivPtr = (rand() % 10) + 1;

//     DivideF(NumberV, Divisor);
     
     Manipulated = DivideF(NumberV, Divisor);

     return(Manipulated);
}

void DivideF(double &NumberV, double Divisor)
{
     apvector<double>Quotients(4);
     double Manipulated;
     int Counter=0;

     do{
          if(Counter<4)
          {
               Quotients[Counter] = NumberV / Divisor;
               NumberV = NumberV / Divisor;
          }
          else
          {
               Manipulated = NumberV / Divisor;
          }

          Counter++;
     }
     while (Counter<5);

     cout << setw(10) << "Cycle"
          << setw(10) << "Quotient\n\n";

     for(Counter=0;Counter<4;Counter++)
     {
          cout << setw(10) << (Counter + 1)
          << setw(10) << Quotients[Counter];

          cout << "\n";
     }

     NumberV = NumberV / 2;

     return(Manipulated);
}

C:\Documents and Settings\TOesterle\Desktop\PtrPractical\ptrpimp.cpp(61) : error C2556: 'void __cdecl DivideF(double &,double)' : overloaded function differs only by return type from 'double __cdecl DivideF(double &,double)'
        c:\documents and settings\toesterle\desktop\ptrpractical\ptrphead.h(20) : see declaration of 'DivideF'
C:\Documents and Settings\TOesterle\Desktop\PtrPractical\ptrpimp.cpp(61) : error C2371: 'DivideF' : redefinition; different basic types
        c:\documents and settings\toesterle\desktop\ptrpractical\ptrphead.h(20) : see declaration of 'DivideF'
Avatar of Gula
Gula
Flag of United States of America image

So Why fo you keep void DivideF(double &NumberV, double Divisor)
 as void if it returns double?
ASKER CERTIFIED SOLUTION
Avatar of Exceter
Exceter
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of TCOesterle
TCOesterle

ASKER

Geez, sorry i missed that.  DUMB mistake.
Thanks for the help.
You are most welcome.
>> DUMB mistake.

That happens to all of us from time to time. :-)