这个出错什么原因导致的?
在编译下程序时出现下错误,不知何因,请指教!谢谢!
--------------------Configuration: film_input - Win32 Debug--------------------
Compiling...
test.cpp
f:\c++\film_input\films.h(39) : error C2511: 'input' : overloaded member function 'void (class std::basic_ifstream<char,struct std::char_traits<char> > &)' not found in 'Film'
f:\c++\film_input\films.h(7) : see declaration of 'Film'
Error executing cl.exe.
test.obj - 1 error(s), 0 warning(s)
#include <iostream>
#include <fstream>
#include <string>
#include < cctype>
using namespace std;
class Film{
public:
Film(){
store_title();
store_director();
store_time();
store_quality();
}
void store_title(const string & t){
title=t;
}
void store_title(const char * t=""){
title=t;
}
void store_director(const string &d ){
director=d;
}
void store_director(const char * d=""){
director=d;
}
void store_time(int t=0){time=t;}
void store_quality(int q=0){quality=q;}
virtual void output();
virtual void input(ifstream);
static bool read_input(const char *,Film * [],int);
private:
string title;
string director ;
int time;
int quality;
};
//Reads title,director ,time ,quality;
void Film::input(ifstream& fin){
string inbuff;
cout<<"title : ";
getline(fin,inbuff);
store_title(inbuff);
cout<<"director : ";
getline(fin,inbuff);
store_director(inbuff);
cout<<"time : ";
getline(fin,inbuff);
store_time(atoi(inbuff.c_str()));
cout<<"quality : ";
getling(fin,inbuff);
store_quality(atoi(inbuff.c_str()));
}
//Writes title,director,time,quality;
void Film::output(){ //此处出错
cout<<"Title: "<<title<<endl;
cout<<"Director: "<<director<<endl;
cout<<"Time: "<<time<<endl;
cout<<"Quality: ";
for(int i=0;i<quality;i++)
cout<<"*";
cout<<endl;
}
bool Film::read_input(const char * file,Film * films[],int n){
string inbuff;
ifstream fin(file);
if(!fin)
return false;
int next=0;
while(getline(fin,inbuff)&& next<n){
if(inbuff=="Film")
films[next]=new Film();
else
continue;
films[next++]->input(fin);
}
fin.close();
return true;
}
#include "films.h"
int main(){
const unsigned n=5;
Film* films[5];
if(!Film::read_input("film.dat",films,n)){
cerr<<"Unable to read file films.dat :exiting."<<endl;
exit(EXIT_FAILURE);
}
for(unsigned i=0;i<n;i++)
films[i]->output();
return 0;
}