hey there, im having some trouble with the "friends". When i compile this piece of code on msvc++ it gives me errors, when it really shouldnt. Is there something that has to be done to correct it?
.cpp fileCode:#ifndef H_videoType #define H_videoType #include <iostream> #include <string> using namespace std; class videoType { friend ostream& operator<<(ostream&, const videoType&); public: void setVideoInfo(string title, string star1, string star2, string producer, string director, string productionCo, int setInStock); //Function to set the details of a video. //Private data members are set according to the parameters. //Postcondition: videoTitle = title; movieStar1 = star1; // movieStar2 = star2; movieProducer = // producer; movieDirector = director; // movieProductionCo = productionCo; // copiesInStock = setInStock int getNoOfCopiesInStock() const; //Function to check the number of copies in stock. //Postcondition: The value of the data member // copiesInStock is returned. void checkOut(); //Function to rent a video. //Postcondition: The number of copies in stock is // decremented by one. void checkIn(); //Function to check in a video. //Postcondition: The number of copies in stock is // incremented by one. void printTitle() const; //Function to print the title of a movie. void printInfo() const; //Function to print the details of a video. //The title of the movie, stars, director, and so on are //displayed on the screen. bool checkTitle(string title); //Function to check whether the title is the same as the //title of the video. //Postcondition: Returns true if the title is the same as // the title of the video; // otherwise, returns false. void updateInStock(int num); //Function to increment the number of copies in stock by //adding the value of the parameter num. //Postcondition: copiesInStock = copiesInStock + num void setCopiesInStock(int num); //Function to set the number of copies in stock. //Postcondition: copiesInStock = num string getTitle() const; //Function to return the title of the video. //Postcondition: The title of the video is returned. videoType(string title = "", string star1 = "", string star2 = "", string producer = "", string director = "", string productionCo = "", int setInStock = 0); //constructor //Private data members are set according to the //incoming parameters. If no values are specified, the //default values are assigned. //Postcondition: videoTitle = title; movieStar1 = star1; // movieStar2 = star2; movieProducer = producer; // movieDirector = director; // movieProductionCo = productionCo; // copiesInStock = setInStock //Overloads the relational operators. bool operator==(const videoType&) const; bool operator!=(const videoType&) const; bool operator<(const videoType&) const; //operator< must be defined for videos in order for //the sort function to work private: string videoTitle; //variable to store the name //of the movie string movieStar1; //variable to store the name //of the star string movieStar2; //variable to store the name //of the star string movieProducer; //variable to store the name //of the producer string movieDirector; //variable to store the name //of the director string movieProductionCo; //variable to store the name //of the production company int copiesInStock; //variable to store the number of //copies in stock }; #endif
Code:#include <iostream> #include <string> #include <cctype> #include "videoType.h" using namespace std; void videoType::setVideoInfo(string title, string star1, string star2, string producer, string director, string productionCo, int setInStock) { videoTitle = title; movieStar1 = star1; movieStar2 = star2; movieProducer = producer; movieDirector = director; movieProductionCo = productionCo; copiesInStock = setInStock; } void videoType::checkOut() { if(copiesInStock > 0) copiesInStock--; else cout<<"Currently out of stock"<<endl; } void videoType::checkIn() { copiesInStock++; } int videoType::getNoOfCopiesInStock() const { return copiesInStock; } void videoType::printTitle() const { cout<<"Video Title: "<<videoTitle<<endl; } void videoType::printInfo() const { cout<<"Video Title: "<<videoTitle<<endl; cout<<"Stars: "<<movieStar1<<" and "<<movieStar2<<endl; cout<<"Producer: "<<movieProducer<<endl; cout<<"Director: "<<movieDirector<<endl; cout<<"Production Company: "<<movieProductionCo<<endl; cout<<"Copies in stock: "<<copiesInStock<<endl; } bool videoType::checkTitle(string title) { return(videoTitle == title); } void videoType::updateInStock(int num) { copiesInStock += num; } void videoType::setCopiesInStock(int num) { copiesInStock = num; } string videoType::getTitle() const { return videoTitle; } videoType::videoType(string title, string star1, string star2, string producer, string director, string productionCo, int setInStock) { setVideoInfo(title, star1, star2, producer, director, productionCo, setInStock); } bool videoType::operator==(const videoType& other) const { return (videoTitle == other.videoTitle); } bool videoType::operator!=(const videoType& other) const { return (videoTitle != other.videoTitle); } bool videoType::operator<(const videoType& other) const { return (videoTitle < other.videoTitle); } ostream& operator<<(ostream& os, const videoType& video) { os<<endl; os<<"Video Title: "<<video.videoTitle<<endl; os<<"Stars: "<<video.movieStar1<<" and " <<video.movieStar2<<endl; os<<"Producer: "<<video.movieProducer<<endl; os<<"Director: "<<video.movieDirector<<endl; os<<"Production Company: "<<video.movieProductionCo<<endl; os<<"Copies in stock: "<<video.copiesInStock<<endl; os<<"_____________________________________"<<endl; return os; }



LinkBack URL
About LinkBacks


