Struktur an Klasse übergeben



  • Wie folgt aus "es handelt sich bei den Klassen um jeweils einzelne Threads" (was für sich genommen schon unsinnig ist) die Aussage "ich kann die Klasse nicht in eine andeer Datei auslagern"?



  • KeinKredit schrieb:

    Danke für die Antworten top 👍
    Leider ist das Problem immernoch nicht gelöst, ich kann die Klasse nicht in eine andeer Datei auslagern weil es sich bei den Klassen um jeweils einzelne Threads handelt.

    Diese Aussage macht jedenfalls für mich persönlich überhaupt keinen Sinn.
    Was hat denn die Klassendefinition mit Threads zu tun.

    Poste einfach mal in verkürzter Form deine beiden Klassendefinitionen, dein struct und wo du was machen willst.

    Ich glaube nicht, dass wir ansonsten hier weiterkommen.



  • ^ Hallo manni, vlt hab ich mich etwas falsch ausgedrückt. Aber die Auslagerung funktioniert so nicht.
    Jedenfalls verstehe ich einfach nicht WOOOOO der Fehler in meiner oberen Beschreibung ist.

    Wieso kann ich nicht einfach einen Pointer auf eine Klasse einer anderen Klasse übergeben die ebenfalls die erste Klasse als include besitzt?!

    Danke Gruß



  • KeinKredit schrieb:

    ^ Hallo manni, vlt hab ich mich etwas falsch ausgedrückt. Aber die Auslagerung funktioniert so nicht.

    Wieso nicht, dass MUSS funktionieren, wir sind hier nicht bei Outer Limits.

    Poste einfach mal in verkürzter Form deine beiden Klassendefinitionen, dein struct und wo du was machen willst.

    Ich glaube nicht, dass wir ansonsten hier weiterkommen.



  • ^Nein das Funktioniert so nicht. Ich will/kann die Daten nicht auslagern.

    Könnt ihr mir bitte erklären was an der oberen Beschreibung falsch ist. Danke!



  • Ich nehme an, das deine Beschreibung korrekt ist.



  • Zum dritten Mal: Das ist möglich! Zeig mehr Code!



  • Hallo Blurry333,

    der Fehler steht doch daa. Das sind zwei unterschiedliche Typen.

    Warum genau willst du denn nicht das machen, was dir hier vorgeschlagen wird? Wenn du mal erklären würdest, warum, dann würde man eventuell nicht so in die Richtung drücken.



  • Hier mehr Code, das macht es aber nur noch unübersichtlicher.
    Hab bereits bei der Klasse Dateiverwaltung anstatt

    struct NLP_data_header_package *Header_data...
    

    versucht

    com::NLP_data_header_package *Header_data
    

    funktioniert aber auch nicht.

    Class com

    #ifndef COM_H
    #define COM_H
    //...
    #include "Dateiverwaltung.h"
    //...
    
    class com
    {
    private:
    
    Dateiverwaltung obj;
    //...
    public:
    
    int run(void);
    com(std::array<std::string,TWO> socket);
    ~com();
    
    struct NLP_data_header_package
    {
    	//...
    }NLP_data_recv;
    
    struct NLP_data_data_package
    {
            //...
    }recv_data_data;
    
    //...
    

    class com cpp file:

    //...
    if (recv_command == DATA_COMMAND)
    		{
    			obj.routine(ip_s.c_str(), &NLP_data_recv, &recv_data_data); //write to harddrive
    			obj.ext_close_file();
    
    		}
    //...
    

    Class Dateiverwaltung

    #ifndef DATEIVERWALTUNG_H
    #define DATEIVERWALTUNG_H
    
    //...
    #include "communication.h"
    //...
    public:
    	Dateiverwaltung(char* directory_global_re);
        ~Dateiverwaltung();  
    
    	int routine(std::string raw_data_re, struct NLP_data_header_package *Header_data, struct NLP_data_data_package *Data_data);
    	int ext_close_file(void);
    //...
    

    Class Dateiverwaltung cpp file

    //...
    int Dateiverwaltung::routine(string raw_data_re, struct NLP_data_header_package *Header_data, struct NLP_data_data_package *Data_data)
    {
    //...
    


  • LOL! Typischer Anfängerfehler: Cross-Include der Headerdateien (s. z.B. FAQ-Beitrag Wechselseitiger Zugriff auf Objekte).

    @KeinKredit: Du hast aber den Ratschlag, die Struktur(en) in eine eigene Datei auszulagern, nicht befolgt!

    Ein andere Alternative wäre, daß du die Strukturen in der Headerdatei "Dateiverwaltung.h" deklarierst (denn diese bindest du ja von der anderen Headerdatei "communication.h" ein).


Anmelden zum Antworten