大家下午好,C++小问题C/C++ code#includeiostream#includefstream#includevector#includestringus
大家下午好,C++小问题
- C/C++ code
#include<iostream>#include<fstream>#include<vector>#include<string>using namespace std;class Book{public: Book():ISBN('\0'),name('\0'),price(0){}; void modify(); void show(); string ISBN; string name; float price;};void Book::modify(){ cin>>ISBN>>name>>price;}void Book::show(){ cout<<ISBN<<'\n'<<name<<'\n'<<price<<endl;}vector<Book>B;int Load(){ ifstream in; int i=0; in.open("bookdatabase.txt"); if (!in) { cerr <<"error: unable to open file"<< endl; exit(0); } while(!in.eof()) { Book *temp=new Book; in>>temp->ISBN>>temp->name>>temp->price; B.push_back(temp); i++; } return i;}int main(){ int i=0,j=0; i=Load(); for(j;j<i;j++){cout<<B[j].ISBN<<"\n"<<B[j].name<<"\n"<<B[j].price<<"\n";}}运行时:C:\Users\Administrator.PPTV3-20120303Z\Desktop\a\bm.cpp(39) : error C2664: 'push_back' : cannot convert parameter 1 from 'class Book *' to 'const class Book &'
Reason: cannot convert from 'class Book *' to 'const class Book'
No constructor could take the source type, or constructor overload resolution was ambiguous
请问下是什么原因呢,我是新手,自己做的,结果出错了
[解决办法]
不能将引用转换为指针
B.push_back(temp);改成B.push_back(*temp);
[解决办法]
定义的vector<BOOK> B,你B.push_back(temp);
Book *temp=new Book,temp是指针。
[解决办法]
B.push_back(*temp);。。。。
