Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Does the following construct qualify as overloading on return type ?

Reply
Thread Tools

Does the following construct qualify as overloading on return type ?

 
 
Nikhil.S.Ketkar@gmail.com
Guest
Posts: n/a
 
      08-15-2008
Hi,


Does the following construct qualify as overloading on return type ?
If not, in what way ? I overloaded the type conversion operator and
used pointers to member functions. Its pretty straightforward but I
am sure I have missed as this is not supposed to be possible. Am I
misunderstanding overloading ?


Thanks,
Nikhil

// foo() overloads on both input parameters and return value
//-------------------------------------------------------------
// int int_output = foo(int &int_input);
// double double_output = foo(int &int_input);
// int int_output = foo(double &double_input);
// double double_output = foo(double &double_input);
//-------------------------------------------------------------

#include <iostream>

class foo
{
public:
foo(int *given) {given_int = given; int_ = &foo::int_int; double_ =
&foo::double_int;}
foo(double *given) {given_double = given; int_ = &foo::int_double;
double_ = &foo::double_double;}
operator double () { (this->*double_)(); }
operator int () { (this->*int_)(); }
private:
double double_double() { std::cout << "--> foo called with input
double and output double\n";}
double double_int() { std::cout << "-->foo called with output
double and output int was called\n";}
int int_int() { std::cout << "-->foo called with input int and
output int was called\n";}
int int_double() { std::cout << "-->foo called with input int and
output double was called\n";}
int *given_int;
double *given_double;
int (foo::*int_)();
double (foo::*double_)();
};



int main(int argc, char *argv)
{
double double_input, double_output;
int int_input, int_output;

std::cout << "Trying foo with int input and int output\n";
int_output = foo(&int_input);

std::cout << "Trying foo with int input and double output\n";
double_output = foo(&int_input);

std::cout << "Trying foo with double input and int output\n";
int_output = foo(&double_input);

std::cout << "Trying foo with double input and double output\n";
double_output = foo(&double_input);

}

// Output

// Trying foo with int input and int output
// -->foo called with input int and output int was called
// Trying foo with int input and double output
// -->foo called with output double and output int was called
// Trying foo with double input and int output
// -->foo called with input int and output double was called
// Trying foo with double input and double output
// --> foo called with input double and output double

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Behavior of if construct in switch case defualt construct. Mukesh C Programming 4 03-26-2010 12:38 PM
Does my MCDST cert. qualify for an MCSE elective? Aaron Rykhus MCSE 8 11-17-2006 02:21 AM
what value does lack of return or empty "return;" return Greenhorn C Programming 15 03-06-2005 08:19 PM
Newbie: Does this qualify as "encrypted?" Hank Javascript 6 08-11-2004 08:44 PM
Why do I have to qualify 'DataRowView' with System.Data? karim ASP .Net 5 07-11-2003 07:12 PM



Advertisments