我的函数output_all,add_item和remove_item都是从main.cc文件中获取此错误的。我错过了什么?我认为这很简单,但显然我搞砸了。我将在下面包含我的文件。提前感谢您的帮助!
main.cc
#include <iostream>
#include <string>
#include <cstdlib>
#include "basket.h"
using namespace std;
int main(){
int choice;
string item;
cout << "Would you like to: \n\n 1.See List \n 2.Add an Item \n 3.Remove an item \n 4.Exit \n\n Please Enter a number: ";
cin >> choice;
if (choice == 1){
output_all(cout);
}
else if (choice == 2){
cout << "Please enter the item you would like to add to the list: ";
cin >> item;
add_item(item);
}
else if (choice == 3){
cout << "Please enter the name of the item you would like to remove: ";
cin >> item;
remove_item(item);
}
else if (choice == 4){
exit(1);
}
else {
main();
}
return (0);
}
basket.h
#include <iostream>
#include <string>
using namespace std;
class basket{
public:
//function will output all of the items currently in the list
void output_all(ostream& fout);
//Function will allow user to add item to list
void add_item(const string& item);
//function will remove item from list after checking that item exists in the list
void remove_item(const string& item);
// accessor method to access the string name
string get_name();
private:
//string variable used for storing thr list
string name;
};
basket.cc
#include <iostream>
#include <string>
#include "basket.h"
using namespace std;
void basket::output_all(ostream& fout){
fout << name;
}
void basket::add_item(const string& item){
name = name + " " + item;
}
void basket::remove_item(const string& item){
int num = name.find(item);
name.erase(num, item.length());
}
string basket::get_name(){
return (name);
}
答案 0 :(得分:0)
嗯,您在output_all
中调用add_item
,remove_item
,main
等函数。你的程序中没有这样的功能。因此[明显]错误。
如果您尝试调用类basket
的成员函数,那么您应该声明类型为basket
的对象并使用完全不同的语法(成员访问语法)。你最喜欢的C ++书籍会有很多解释和例子。
main
函数是违法的。你必须学会使用周期来实现你对main
的递归调用所要做的事情。
答案 1 :(得分:0)
我可以看到output_all()
,add_item()
,remove_item()
是basket
类的非静态成员。因此,应从output_all(cout)
basketObj.output_all(cout);