"Undefined Reference" Error! Help Plz
Would someone help me understand why I keep getting the error:
"In function main: [linker error] undefined reference to readBook(BookData)"
I have spend hours trying to fix it, but no luck :/
Thanks in advance
main.cpp :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
#include "BookData.h"
// FUNCTION PROTOTYPES:
void bookInfo(BookData);
void readBook(BookData& book1);
int main(){
BookData book1, book2;
cout << "\nEnter the data for the first book:\n";
readBook(book1);
cout << "\nEnter the data for the second book:\n";
readBook(book2);
cout << "\nDisplay the data for the first book:\n";
bookInfo(book1);
cout << "\nDisplay the data for the second book:\n";
bookInfo(book2);
system("pause");
return 0;
}
void bookInfo(BookData book)
{
string temp;
cout << left;
cout << " " << setw(22) << "ISBN:" << book.getIsbn() << endl;
cout << " " << setw(22) << "Title:" << book.getTitle() << endl;
cout << " " << setw(22) << "Author:" << book.getAuthor() << endl;
cout << " " << setw(22) << "Publisher:" << book.getPub() << endl;
cout << " " << setw(22) << "Date Added:" << book.getDateAdded() << endl;
cout << " " << setw(22) << "Quantity-On-Hand:" << book.getQty() << endl;
cout << " " << setw(22) << "Wholesale Cost:" << "$" << fixed << setprecision(2) << book.getWholeSale() << endl;
cout << " " << setw(22) << "Retail Price:" << "$" << book.getRetail() << endl;
temp = book.isEmpty()?"yes":"No";
cout << " " << setw(22) << "Empty?" << temp << endl;
}
void readBook(BookData& book1)
{
string tempS;
int tempI;
double tempD;
cout << "Enter the Title: ";
cin >> tempS;
book1.setTitle(tempS);
cout << "Enter the ISBN: ";
cin >> tempS;
book1.setIsbn(tempS);
cout << "Enter the Author: ";
cin >> tempS;
book1.setAuthor(tempS);
cout << "Enter the Publisher: ";
cin >> tempS;
book1.setPub(tempS);
cout << "Enter Date Added: " ;
cin >> tempS;
book1.setDateAdded(tempS);
cout << "Enter Quantity on Hand: ";
cin >> tempI;
book1.setQty(tempI);
cout << "Enter Wholsale Price: " ;
cin >> tempD;
book1.setWholesale(tempD);
cout << "Enter Retail Price: " ;
cin >> tempD;
book1.setRetail(tempD);
cout << "Enter 1 to insert the book or 0 to remove: ";
cin >> tempI;
while (tempI > 1 || tempI < 0)
{
cout << "Wrong entry. Try again: ";
cin >> tempI;
}
if (tempI == 0)
book1.insertBook();
else
book1.removeBook();
}
|
BookData.cpp :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
#include <string>
class BookData
{
private:
string bookTitle;
string isbn;
string author;
string publisher;
string dateAdded;
int qtyOnHand;
double wholesale;
double retail;
bool empty;
public:
BookData();
void setTitle(string object);
void setIsbn(string code);
void setAuthor(string auth);
void setPub(string pub);
void setDateAdded(string dateAdd);
void setQty(int quant);
void setWholesale(double price);
void setRetail(double temp);
bool isEmpty();
void insertBook();
void removeBook();
string getTitle();
string getIsbn();
string getAuthor();
string getPub();
string getDateAdded();
int getQty();
double getWholeSale();
double getRetail();
};
BookData::BookData()//Default Constructor
{
qtyOnHand = 0;
wholesale = 0;
retail = 0;
empty = true;
bookTitle = isbn = author = publisher = dateAdded = "";
}
void BookData::setTitle(string object)
{
bookTitle = object;
}
void BookData::setIsbn(string code)
{
isbn = code;
}
void BookData::setAuthor(string auth)
{
author = auth;
}
void BookData::setPub(string pub)
{
publisher = pub;
}
void BookData::setDateAdded(string dateAdd)
{
dateAdded = dateAdd;
}
void BookData::setQty(int quant)
{
qtyOnHand = quant;
}
void BookData::setWholesale(double price)
{
wholesale = price;
}
void BookData::setRetail(double temp){
retail = temp;
}
bool BookData::isEmpty(){
return empty;
}
void BookData::insertBook(){
empty = false;
}
void BookData::removeBook(){
empty = true;
}
string BookData::getTitle(){
return bookTitle;
}
string BookData::getIsbn(){
return isbn;
}
string BookData::getAuthor(){
return author;
}
string BookData::getPub(){
return publisher;
}
string BookData::getDateAdded(){
return dateAdded;
}
int BookData::getQty(){
return qtyOnHand;
}
double BookData::getWholeSale(){
return wholesale;
}
double BookData::getRetail(){
return retail;
}
|
DataBook.h :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#ifndef BOOKDATA_H
#define BOOKDATA_H
#include <string>
class BookData
{
private:
string bookTitle;
string isbn;
string author;
string publisher;
string dateAdded;
int qtyOnHand;
double wholesale;
double retail;
bool empty;
public:
BookData();
void setTitle(string object);
void setIsbn(string code);
void setAuthor(string auth);
void setPub(string pub);
void setDateAdded(string dateAdd);
void setQty(int quant);
void setWholesale(double price);
void setRetail(double temp);
bool isEmpty();
void insertBook();
void removeBook();
string getTitle();
string getIsbn();
string getAuthor();
string getPub();
string getDateAdded();
int getQty();
double getWholeSale();
double getRetail();
};
#endif
|
There is no definition of function readBook(BookData) in your program. Check the declaration and the definition of this name.
Last edited on
bookInfo(ReadBook)
, this needs to be by reference.
Topic archived. No new replies allowed.