/*======================== Class Dados/Data ========================*/
class Dados
{
string nome;
int valor;
public:
Dados(string n, int v) : nome(n), valor(v){};
//~dados();
string GetNome()const{return nome;}
int GetValor()const{return valor;}
void SetValor(int x){valor = x;}
string GetAsString() const {
ostringstream oss;
oss << nome <<": "<< valor;
return oss.str();
}
};
/*======================== Class FileReader ========================*/
class FileReader{
vector<Dados> dados;
public:
bool ReadFile(string file) {
dados.empty();
string fnome, ftemp;
int fvalor;
ifstream fich(file);
string linha;
if (fich.is_open())
{
while (fich.peek() != EOF){
getline(fich, linha);
istringstream iss(linha);
//cout << ".";
iss >> fnome;
iss >> ftemp;
iss >> fvalor;
dados.push_back(Dados(fnome,fvalor));
}
fich.close();
return 0;
}
else{
cout << "Ficheiro \""<< file <<"\" nao encontrado!";
return 1;
}
}
string GetAsString()
{
ostringstream oss;
vector<Dados>::const_iterator it;
it = dados.begin();
while (it != dados.end()){
oss << it->GetAsString() << endl;
it++;
}
return oss.str();
}
int FindOnVector(string const fi)
{
int val = -1; //-1 se for erro
vector<Dados>::const_iterator it;
it = dados.begin();
while (it != dados.end()){
if(fi == it->GetNome()){
val = it->GetValor();
}
it++;
}
return val;
}
void Save(){
vector<Dados>::const_iterator it;
it = dados.begin();
while (it != dados.end()){
cout << it->GetAsString() << endl;
it++;
}
}
};
我有主要的,
void main(int argc,char** argv){
FileReader fr;
if( fr.ReadFile(argv[1])==0){
cout <<endl<< fr.GetAsString();
}else {
cout << "[ ERRO ]" << endl;
}
jogo g(&fr);
cout << "\n\n-------------Test2--------------------" << endl;
fr.Save();
}
另外两个班级:
class jogo{
public:
jogo(FileReader *A){
teste t(&A);
};
};
class teste{
public:
teste(FileReader *C){
vector<Dados>::const_iterator it;
it = C.begin();
while (it != C.end()){
cout << it->GetAsString() << endl;
it++;
}
};
};
在Jogo类中,我尝试将FileReader的点传递给测试类,但是不可能。 我做错了什么?
抱歉,这不是必要的具体内容。错误:在Teste课上 当我尝试使用C指针这个错误:
1 IntelliSense: expression must have class type e:\is\Documents\ConsoleApplication1\ConsoleApplication1\Source.cpp 141
最好的。
答案 0 :(得分:0)
哦,我明白了:你很可能在调用teste
的构造函数时遇到错误,因为你错过了对该类的Forward引用。使用.h文件为两个类或在jogo之前声明teste。