You cannot use DVD
class members in that context to deal with issue you must rebuild your Print
function in that principe to specify it as DVD
class member the same is for SetInfo
function.
void DVD::Print()
{
using namespace std;
cout << "Title" << m_strTitle << "YearOfRelease" << m_nYearOfRelease << "Genre" << m_strGenre <<
"RentalStatus" << m_strRentalStatus << endl;
}
The entire declaration-defenition code.
#include <iostream>
#include <string>
class DVD
{
public:
char m_strTitle[25];
int m_nYearOfRelease;
char m_strGenre[25];
char m_strRentalStatus[50];
void Print();
void SetInfo(const char *strTitle, int nYearOfRelease, const char *strGenre, const char *strRentalStatus);
};
void DVD::Print()
{
using namespace std;
cout << "Title" << m_strTitle << "YearOfRelease" << m_nYearOfRelease << "Genre" << m_strGenre <<
"RentalStatus" << m_strRentalStatus << endl;
}
// Set the Info for 10 DVDs
// Also DVD class member function
void DVD::SetInfo(const char *strTitle, int nYearOfRelease, const char *strGenre, const char *strRentalStatus)
{
strncpy(m_strTitle, strTitle, 25);
m_nYearOfRelease = nYearOfRelease;
strncpy(m_strGenre, strGenre, 25);
strncpy(m_strRentalStatus, strRentalStatus, 50);
}
int main()
{
//Declare 10 DVDs
DVD cInception;
cInception.SetInfo("Inception", 2010, "Action", "In stock");
DVD cFightClub;
cFightClub.SetInfo("Fight Club", 1999, "Action/Suspense", "Due back November12th");
DVD cPulpFiction;
cPulpFiction.SetInfo("Pulp Fiction", 1994, "Action", "In Stock");
DVD cTheDarkKnight;
cTheDarkKnight.SetInfo("The Dark Knight", 2008, "Drama", "In Stock");
DVD cAmericanHustle;
cAmericanHustle.SetInfo("American Hustle", 2013, "Drama", "Due back December1st");
DVD cSilverLiningsPlaybook;
cSilverLiningsPlaybook.SetInfo("Silver Linings Playbook", 2012, "Drama/Romance", "In Stock");
DVD cTheHungerGames;
cTheHungerGames.SetInfo("The Hunger Games", 2012, "Adventure", "Due Back Today at 12pm");
DVD cFurious7;
cFurious7.SetInfo("Furious 7", 2015, "Action", "One Left in Stock");
DVD cSavingPrivateRyan;
cSavingPrivateRyan.SetInfo("Saving Private Ryan", 1998, "Drama/War", "Discontinued");
DVD cGladiator;
cGladiator.SetInfo("Gladiator", 2000, "Action", "In Stock");
//Print out DVD Info
cInception.Print();
cFightClub.Print();
cPulpFiction.Print();
cTheDarkKnight.Print();
cAmericanHustle.Print();
cSilverLiningsPlaybook.Print();
cTheHungerGames.Print();
cFurious7.Print();
cSavingPrivateRyan.Print();
cGladiator.Print();
return 0; // fix return statement member
}
To create your program as different translation units.
The class declaration must be in DVD.h
#ifndef __DVD_H__
#define __DVD_H__
#include <iostream>
#include <string>
class DVD
{
public:
char m_strTitle[25];
int m_nYearOfRelease;
char m_strGenre[25];
char m_strRentalStatus[50];
void Print();
void SetInfo(const char *strTitle, int nYearOfRelease, const char *strGenre, const char *strRentalStatus);
};
#endif /* __DVD_H__ */
Defenition of DVD class methods in DVD.cpp
#include "DVD.h"
void DVD::Print()
{
using namespace std;
cout << "Title" << m_strTitle << "YearOfRelease" << m_nYearOfRelease << "Genre" << m_strGenre <<
"RentalStatus" << m_strRentalStatus << endl;
}
// Set the Info for 10 DVDs
// Also DVD class member function
void DVD::SetInfo(const char *strTitle, int nYearOfRelease, const char *strGenre, const char *strRentalStatus)
{
strncpy(m_strTitle, strTitle, 25);
m_nYearOfRelease = nYearOfRelease;
strncpy(m_strGenre, strGenre, 25);
strncpy(m_strRentalStatus, strRentalStatus, 50);
}
than in main.cpp
#include <iostream>
#include <string>
#include "DVD.h"
int main()
{
//Declare 10 DVDs
DVD cInception;
cInception.SetInfo("Inception", 2010, "Action", "In stock");
DVD cFightClub;
cFightClub.SetInfo("Fight Club", 1999, "Action/Suspense", "Due back November12th");
DVD cPulpFiction;
cPulpFiction.SetInfo("Pulp Fiction", 1994, "Action", "In Stock");
DVD cTheDarkKnight;
cTheDarkKnight.SetInfo("The Dark Knight", 2008, "Drama", "In Stock");
DVD cAmericanHustle;
cAmericanHustle.SetInfo("American Hustle", 2013, "Drama", "Due back December1st");
DVD cSilverLiningsPlaybook;
cSilverLiningsPlaybook.SetInfo("Silver Linings Playbook", 2012, "Drama/Romance", "In Stock");
DVD cTheHungerGames;
cTheHungerGames.SetInfo("The Hunger Games", 2012, "Adventure", "Due Back Today at 12pm");
DVD cFurious7;
cFurious7.SetInfo("Furious 7", 2015, "Action", "One Left in Stock");
DVD cSavingPrivateRyan;
cSavingPrivateRyan.SetInfo("Saving Private Ryan", 1998, "Drama/War", "Discontinued");
DVD cGladiator;
cGladiator.SetInfo("Gladiator", 2000, "Action", "In Stock");
//Print out DVD Info
cInception.Print();
cFightClub.Print();
cPulpFiction.Print();
cTheDarkKnight.Print();
cAmericanHustle.Print();
cSilverLiningsPlaybook.Print();
cTheHungerGames.Print();
cFurious7.Print();
cSavingPrivateRyan.Print();
cGladiator.Print();
return 0; // fix return statement member
}
to work with file we must define new DVD class method
// Defile new class method
void DVD::SetInfo(std::istream& stream)
{
// Read title
stream.getline(m_strTitle, 25);
// Read year of release
stream >> m_nYearOfRelease
// Read genre
stream.getline(m_strGenre, 25);
// Read rental status
stream.getline(m_strRentalStatus, 50);
}
so in main.cpp we got this
#include <iostream>
#include <string>
#include "DVD.h"
int main()
{
std::ifstream input_file("filename.txt");
DVD cInception;
cInception.SetInfo(input_file);
DVD cFightClub;
cFightClub.SetInfo(input_file);
DVD cPulpFiction;
cPulpFiction.SetInfo(input_file);
DVD cTheDarkKnight;
cTheDarkKnight.SetInfo(input_file);
DVD cAmericanHustle;
cAmericanHustle.SetInfo(input_file);
DVD cSilverLiningsPlaybook;
cSilverLiningsPlaybook.SetInfo(input_file);
DVD cTheHungerGames;
cTheHungerGames.SetInfo(input_file);
DVD cFurious7;
cFurious7.SetInfo(input_file);
DVD cSavingPrivateRyan;
cSavingPrivateRyan.SetInfo(input_file);
DVD cGladiator;
cGladiator.SetInfo(input_file);
//Print out DVD Info
cInception.Print();
cFightClub.Print();
cPulpFiction.Print();
cTheDarkKnight.Print();
cAmericanHustle.Print();
cSilverLiningsPlaybook.Print();
cTheHungerGames.Print();
cFurious7.Print();
cSavingPrivateRyan.Print();
cGladiator.Print();
return 0; // fix return statement member
}