string in klasse verwenden



  • Ist im Header string includiert?



  • Hast du vielleicht nach einer Klasse, die du in database.h includierst, ein ';' vergessen?

    Also:

    class Klasse {
    //....
    }; // <----



  • Danke für die schnelle antwort, doch irgend wie nix 😮

    @Schamote: habe ich 😉

    @manni66: das mit der groß klein schreibung war irgnde wie nur ein kopier fehler hier in, im programm ist es beides gleich geschrieben

    Doch wie mach ich das in die header das string einfügen einfach mit #include <string> währe logisch oder 😃
    auch bei namespace std kommt auch die fehlermeldung.

    Ich habe noch was herausgefunden:

    wenn ich mit der maus in database.cpp über DatabaseIDnum gehen steht da:

    Error: Die Deklaration ist nicht "" <error-type> Database::DatabaseIDnum()"(deklariert in Zeile 14 von "...\\Database.h") kompatible
    

  • Mod

    CocoEi schrieb:

    @manni66: das mit der groß klein schreibung war irgnde wie nur ein kopier fehler hier in, im programm ist es beides gleich geschrieben

    Gib uns bei Fehlern dieser Art den exakten Code. Copy & Paste. Nichts abgetipptes und nichts was so ähnlich aussieht wie der fehlerverursachende Code. Du baust dadurch bloß andere Fehler ein (die dann gefunden werden) oder machst den Fehler zufällig weg. Siehe dritter Link in meiner Signatur.



  • Jepp. Das ist kein vollständiges Minimalbeispiel. Was ist Database? Woher kommt string bzw std::string?

    Und was ist, wenn die Datei noch nur zwei Zeilen oder weniger enthält? Dann gibt es keine dritte Zeile und das Programm kackt ab. Das ist eine Situation, in der ich eine Ausnahme werfen würde.



  • Der code von oben ist kopiert, mit copy&past

    hier noch mal:
    Database.cpp -> halt nur eine methode daraus:

    #include "Database.h"
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <vector>
    #include <time.h>
    
    using namespace std;
    fstream Datafile;
    string timefile = "TimeFile.txt";
    
    string Database::DatabaseIDnum(void)
    {
    
        std::vector<std::string> lines;
    
    	std::string line;
    	Datafile.open(timefile, ios::app);
    
    	while(std::getline(Datafile, line))
    	{
    		lines.push_back(line);
    	}
    
    	return lines[2];
    }
    

    Database.h

    #pragma once
    
    class Database
    {
    public:
    	void DatabaseBeleg(void);
    	void DatabaseQuitung(void);
    	int DatabaseID(void);
    private:
    	int Month(void);
    	int Year(void);
    	string DatabaseIDnum(void);
    };
    

    @krümelkacker Database ist eine Klasse

    Und die Text datei hat auf jeden fall eine 2 zeile!

    ich habe auch noch mal was rumprobier ich weiß zumindes wo der fehler sein müsst!
    Der kann vermutlich kein string returnen, weil das ein vector string ist, so würd ich es mir vorstellen.

    hier noch mal eine test klasse

    string Test::Read()
    {
    	return "HAllo";
    
    }
    
    #pragma once
    #include <string>
    using namespace std;
    class Test
    {
    public:
    	Test(void);
    	~Test(void);
    	string Read();
    };
    

    so was klapt bei mir 😉 wäre auch schlecht wenn nicht 😃

    gruß
    coco



  • In Database muss es "std::string DatabaseIDnum(void);" heißen. Die ganzen "void" kannst du übrigens auch weglassen.



  • haha,
    sry das ich euch gehirn zellen zum denken angeregt habe 😃
    doch ich weiß wo der fehler lag:

    Wie

    manni66 schrieb:

    Ist im Header string includiert?

    gesagt hat, doch using namespace std; musst auch noch dazu.

    Danke noch mals!

    PS:das mit dem void weiß ich 😃
    gruß
    coco http://www.gipfeltreffen.at/images/smilies/smi_mit%20kopf%20gegen%20die%20wand.gif



  • In Headern sollte man auf gar keinen fall ein using namespace einsetzen! Lieber std:: usw. schreiben!



  • ok werde ich befolgen 😉
    doch wie so nicht ?
    Damit man auch andere namespace benutzen kann?



  • guck mal hier



  • ok danke 😛 ^^


Anmelden zum Antworten