Forums
New posts
Search forums
Members
Current visitors
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Menu
Log in
Register
Install the app
Install
Forums
Archive
Archive
C++
Classes: Reading in data? Using constructors?
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
[QUOTE="fakeprogress, post: 2557200"] Upon following your suggestions, Jonathan Mcdougall, my program will not compile. I get a lot of errors: 6 C:\CIS\22\asn2\asn2.cpp In file included from C:\CIS\22\asn2\asn2.cpp 31 C:\CIS\22\asn2\library.hpp prototype for `const std::string Book::getNcopies() const' does not match any in class `Book' 13 C:\CIS\22\asn2\library.hpp int Book::getNcopies() const 31 C:\CIS\22\asn2\library.hpp `const std::string Book::getNcopies() const' and `int Book::getNcopies() const' cannot be overloaded C:\CIS\22\asn2\library.hpp In member function `const std::string Book::getNcopies() const': 32 C:\CIS\22\asn2\library.hpp initializing argument 1 of `std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]' 32 C:\CIS\22\asn2\library.hpp At global scope: 35 C:\CIS\22\asn2\library.hpp prototype for `const std::string Book::getOnLoan() const' does not match any in class `Book' 14 C:\CIS\22\asn2\library.hpp int Book::getOnLoan() const 35 C:\CIS\22\asn2\library.hpp `const std::string Book::getOnLoan() const' and `int Book::getOnLoan() const' cannot be overloaded C:\CIS\22\asn2\library.hpp In member function `const std::string Book::getOnLoan() const': 36 C:\CIS\22\asn2\library.hpp invalid conversion from `const int' to `const char*' 36 C:\CIS\22\asn2\library.hpp initializing argument 1 of `std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]' C:\CIS\22\asn2\asn2.cpp In function `int main()': 12 C:\CIS\22\asn2\asn2.cpp `readLibrary' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it appears in.) C:\CIS\22\asn2\asn2.cpp In function `void readLibrary(Library&)': 17 C:\CIS\22\asn2\asn2.cpp `void readLibrary(Library&)' used prior to declaration 59 C:\CIS\22\asn2\asn2.cpp `load' undeclared (first use this function) C:\CIS\22\asn2\library.hpp In function `void printFull(Library&)': 4 C:\CIS\22\asn2\library.hpp `std::string Book::title' is private 69 C:\CIS\22\asn2\asn2.cpp within this context 69 C:\CIS\22\asn2\asn2.cpp no match for call to `(std::string) ()' 3 C:\CIS\22\asn2\library.hpp `std::string Book::author' is private 70 C:\CIS\22\asn2\asn2.cpp within this context 70 C:\CIS\22\asn2\asn2.cpp no match for call to `(std::string) ()' My code is: library.hpp ---------------- class Book { private: std::string author; std::string title; std::string code; int ncopies; int onloan; public: Book( const std::string &auth, const std::string &tit, const std::string &cd, int ncop, int nonload = 0 ); const std::string &getAuthor( ) const; const std::string &getTitle( ) const; const std::string &getCode( ) const; int getNcopies( ) const; int getOnLoan( ) const; void Borrow( int qty ); void nReturn( int qty ); }; const std::string &Book::getAuthor( ) const { return author; } const std::string &Book::getTitle( ) const { return title; } const std::string &Book::getCode( ) const { return code; } const std::string Book::getNcopies( ) const { return ncopies; } const std::string Book::getOnLoan( ) const { return onloan; } ---------------- asn2.cpp ---------------- #include <iostream> #include <string> #include <vector> #include <fstream> #include <sstream> #include "library.hpp" typedef std::vector<Book> Library; int main( ) { Library lib; readLibrary( lib ); return 0; } void readLibrary( Library &lib ) { // open the file std::ifstream ifs("books.dat"); // we'll detect EOF inside while( true ) { // string values from the data file // copies and load have a _s suffix (string) // because they are temporary objects // they will be converted to ints later on std::string title, author, code, copies_s, loan_s; // get five lines getline(ifs, title); getline(ifs, author); getline(ifs, code); getline(ifs, copies_s); getline(ifs, loan_s); // if we were at the end of file, // or if there was any problems, // one of the calls to getline() failed. // we check it here if (!ifs) break; // istringstream is useful for // converting strings to integers std::istringstream iss; // convert copies_s to an int int copies = 0; iss.str(copies_s); iss >> copies; // convert loan_s to an int int loan = 0; iss.str(loan_s); iss >> loan; // create the book and add it // to the library lib.push_back(Book(title, author, code, copies, load)); } return; } void printFull( Library &lib ) { for (Library::iterator itor=lib.begin(); itor!=lib.end(); ++itor) { Book& b = *itor; std::cout << "Title: " << b.title( ) << "\n" << "Author: " << b.author( ) << "\n"; } return; } [/QUOTE]
Verification
Post reply
Forums
Archive
Archive
C++
Classes: Reading in data? Using constructors?
Top