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.