0

So once again I need some help with this program for class. Maybe its that I'm tired but I can't seem to find the logic error I'm sure I've made here. Here is my code:

#include "Book.h" using namespace std; void add (char*, char*, int); void remove (int&); void list (); int Count; Book Bookshelf [4]; int main () { string In; string N; string A; int Y; int Num; do { cout << "Bookshelf> "; getline(cin, In); if (In.compare("add") == 0) { cout << "Bookshelf> Enter book: "; cin >> N >> A >> Y; add (N,A,Y); } else if (In.compare ("remove") == 0) { cout << "Bookshelf> Select number: "; cin >> Num; remove (Num); } else if (In.compare("list") == 0) { list (); } } while (cin != "quit"); return 0; } void add (string N, string A, int Y) { if (Bookshelf[4].IsEmpty() == false) cout << "Error!" << endl; else { Bookshelf[Count] = Book (N,A,Y); Count++; } cout << "Bookshelf> "; } 

The error occurs at the line add(N,A,Y); but for the life of me I can't tell why it is saying that. They both look like std::strings to me. Can anyone explain this to me?

3 Answers 3

3

You have forgotten to modify your prototype at the top of your file.

It still says

void add (char*, char*, int); 

It should be

void add (string, string, int); 
Sign up to request clarification or add additional context in comments.

1 Comment

Ah thank you. I can't believe I missed that. Shows what waiting till the last minute to finish does.
2

You have a wrong forward declaration.

void add (char*, char*, int); 

Must be -

void add (string, string, int); 

Also, if the array size is N, the accessible indexes are 0 to N-1.

Book Bookshelf [4]; // ..... if (Bookshelf[4].IsEmpty() == false) // There is no object at Bookshelf[4] // Accessible indexes are 0 to 3 

Comments

2

You need to make the declaration match the definition. In the declaration you use char * in the definistion you use string.

If you want to use C strings see c_str. If you want to use strings, remember the '&' to take a reference - saves making a copy. Either way make the prototype and the function signature match.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.