www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2002/08/25/21:51:30

From: "Christina Weber" <ChristinaW AT nyc DOT rr DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: function overloading and inheritance help
Lines: 176
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2600.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
Message-ID: <KCda9.7629$c7.2717042@twister.nyc.rr.com>
Date: Sun, 25 Aug 2002 23:20:10 GMT
NNTP-Posting-Host: 24.29.120.144
X-Complaints-To: abuse AT rr DOT com
X-Trace: twister.nyc.rr.com 1030317610 24.29.120.144 (Sun, 25 Aug 2002 19:20:10 EDT)
NNTP-Posting-Date: Sun, 25 Aug 2002 19:20:10 EDT
Organization: Road Runner - NYC
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

/*
i need help with this program I am doing. I am very confused with function
overloading and inheritance. this is what the program is supposed to do: a
person will be prompted for either a print ad or web ad. if it is a print
ad,
it is .50 per character and if its a web ad, it is .25 per character. the
person
can then enter the ad and the fee will be calculated. also, there is a
derived
class for an international post. if the ad is INT, there is an extra $40 for
the
ad. at the end, the advertisement will be shown on screen along with the fee
of
the advertisemnet. it sounds very easy to me, but i'm just so confused with
correct
syntax of function overloading and how to implement them. any help is very
appreciated. thank you.
*/


#include <iostream.h>
#include <iomanip.h>
#include <string.h>


class JobPost //a class declaration for job post ad online or print
{
 friend JobPost operator + (JobPost, JobPost&);
            /*
            will return the sum of two ads for the two objects passed
            and returned an object with the new cost
            */

 friend int operator > (JobPost&, JobPost&);
            /*
            returns 1 for true, 0 for false. This function will support
            a statement like if Object1 > Object2, note the attribute
compared
            is the adptr
            */

 friend ostream& operator << (ostream&, JobPost&);
            //this function will support a statement like cout << Obj1;

 protected:
        int numpost;
        char posttype[1];
        static double webrate;
        static double printrate;
        char *adptr;
        double adprice; //will hold the price for the ad

    public:
        JobPost(char pt[], char *ptr)
        {
            strcpy(posttype, pt);
            adptr = new char[strlen(ptr)+1];
            strcpy(adptr,ptr); //use this adptr to do comparison
        }
        calcfee()
        {
        if (posttype='w')
   adprice = strlen(adptr)*webrate;
  else (posttype='p')
   adprice = strlen(adptr)*printrate;
        }
      /*
            based on the post type, function will calculate the fee for the
ad.
            Online and print cost .25 cents and .50 cents per character
            respectively.
            */
};

double JobPost::webrate=.25; //per character
double JobPost::printrate=.50; //per character
            /*
            this function is not a class member function but it returns
            a class object when called.
            */

JobPost operator + (const JobPost& obj1, const JobPost& obj2)
{
    JobPost Temp_JobAd;
    TempAd.adprice = obj1.adprice + obj2.adprice;
    return Temp_JobAd;
}

JobPost::ostream& operator << (ostream& os, JobPost& obj1)
{
    os << "Post Type is " << obj1.posttype;
    os << "The price is " << obj1.adprice;
    os << "The ad is " << obj1.adptr;
    return os;
}

friend int operator > (const JobPost& obj1, const JobPost& obj2)
{
    if (Obj1.adptr > Obj2.adptr)
  return 1;
 else
  return 0;

JobPost GetAd()
            /*
            returns a job post object by prompting for posttype web(w) or
            print(p), the ad itself which will be stored in the adptr.
            */

  cout << "Web Type = w\n";
        cout << "Print Type = p\n";
        cout << "Please enter w or p for ad type";
        cin >> adtype;

  strcpy(posttype,adtype);
  strcpy(adptr,ad);
{
        char ad[4000];
            /*
            prompt and instantiate the object using the values acquired
            and return the object
           */

        cout << "Enter the advertisement";
        cin >> ad;

        JobPost post (adtype,ad);
        return post;
}
 //i'm not sure what to do here or if this actually goes here
class internationalPost : public JobPost
{

public:
 internationalPost(char pt1[], char *ptr1);
 JobPost::calcfee();
};

void main()
{
        cout << setprecision(2);
        cout << setiosflags(ios::fixed);
        cout << setiosflags(ios::showpoint);

            /*
            create 1-3 objects by envoking the GetAd method and write the
code
            to use the above functions like calcfee, the three operator
overloading.
            I will create the first object. You should write the code to get
the object
            fee by calling the appropriate function. Create the other two
objects.
            Then envoke the operator overloading functions to compare two
objects,
            sum two objects and display a whole object using the cout
statement.
            */

        JobPost obj1=GetAd(); //my first object.
        calcfee();
        JobPost obj2=GetAd();
        JobPost obj3=GetAd();
        JobPost::JobPost operator + (JobPost, JobPost&);
        JobPost::operator > ( JobPost&, JobPost&);
        JobPost::ostream& operator << (ostream&, JobPost&);

}



__________________________________________________________________ christina
ICQ#: 6550798 Current ICQ status: + More ways to contact me
__________________________________________________________________


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019