I'm kinda confused between the two
Code:
#include <string>
class Address;
class Driver
{
public:
Driver(Address& ad);
void SetDriverDetails(const std::string& fname, const std::string& lname, const std::string& IDno,
const std::string& contact);
const std::string& getFName() const;
const std::string& getSName() const;
bool ReadFromFile(std::istream& i, std::string* refNo);
friend std::istream& operator>>(std::istream& in, Driver& driver);
void SetAddress(Address add);
Address getAddress() const;
const std::string& getContact() const;
const std::string& getIDNo() const;
private:
std::string firstName;
std::string lastName;
std::string idNo;
Address& address;
std::string contact;
};
If you look into this driver class, i have an object Address. Am kinda confused whether to make it a reference like i have, or remove the '&' sign ...
this is how i use it
Code:
// Overload for reading input file streams
std::istream& operator>>(std::istream& in, Driver& driver)
{
std::string fname, sname, licNo, contact;
Address add;
std::string IDNo;
in >> fname >> sname;
in >> IDNo;
in >> contact;
in >> add;
// Here ....
driver.SetAddress(add);
driver.SetDriverDetails(fname, sname, IDNo, contact);
return in;
}
void Driver::SetAddress(Address add)
{
address = add;
}