Qt: fehler beim kompillieren (typumwandlung?!)



  • also ich habe wenig ahnung von qt(im moment).
    ich bekomme bei verwendung der qt-klassen immer solche fehler:

    parser.hpp:44: error: conversion from ‘QValueListIterator<QString>’ to non-scalar type ‘QString’ requested
    parser_qt.cpp:14: error: request for member ‘read’ in ‘prs’, which is of non-class type ‘parser ()()’
    
    #ifdef HAVE_CONFIG_H
    #include <config.h>
    #endif
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #include "array.hpp"
    #include "parser.hpp"
    
    int main(int argc, char *argv[])
    {
    	parser prs();
    	prs.read("/home/dgdaniel/develop/Qt/wh40k/lists/orks/base/", "list.wh40k");
    
      return EXIT_SUCCESS;
    }
    
    #include <iostream>
    
    #include <qstring.h> 
    #include <qstringlist.h>
    #include <qfile.h>
    #include <qtextstream.h> 
    
    class parser
    {
    private:
    	QStringList strList;
    
    public:
    	void read(QString source, QString file);
    	QString get_string(int pos);
    };
    
    void parser::read(QString source, QString file)
    {
    	QString zeile;
    
    	QFile datei(source + file);
    	datei.open(IO_ReadOnly);
    
    	std::cout<<"oeffne: "<<file<<" in "<<source<<std::endl;
    
    	while(datei.isOpen() )
    	{
    		QTextStream stream(&datei);
    		while(!stream.atEnd() )
    		{
    			zeile = stream.readLine();
    			std::cout<<stream.readLine()<<std::endl;
    			strList.append(zeile);
    		}
    	}
    	datei.close();
    	std::cout<<"schliesse: "<<file<<" in "<<source<<std::endl;
    }
    
    QString parser::get_string(int pos)
    {
    	return strList.at(pos);
    }
    


  • parser prs; // statt parser prs();
    

    Letzteres definiert eine Funktion.

    at() gibt dir bei einer QStringList einen Iterator, wie dir der Compiler sagt. Den musst du natürlich dereferenzieren.


Anmelden zum Antworten