Objekt übergeben



  • Hallo,

    wie ist es möglich ein Objekt an eine andere Klasse zu übergeben und dort global sichtbar zu machen?

    Also konkret versuche ich momentan folgendes:

    main.cpp:

    IconGetter myIcons;
    ..
    ..
    ConnectionManager myConnection(desktopPath, myIcons);
    

    ConnectionManager.cpp:

    IconGetter myIcons2;
    ..
    ..
    ConnectionManager::ConnectionManager(string desktopPath, IconGetter &icons)
    {
        desktopAddress = desktopPath;
        myIcons2 = icons;
    }
    

    es funktioniert nicht, wie es soll. Denn ich will den IconGetter aus der main.cpp im Speicher modifizieren. Hilfe 😕



  • Wie wäre es mit static IconGetter?

    static IconGetter& IconGetter::instance()
    {
        static IconGetter inst;
        return inst;
    };
    

    kannst du beliebig "im Speicher bearbeiten".
    Oder willst du mehrere solcher Objekte?
    Dann kannst du entweder verschiedene IconGetter als extern definieren, oder einen IconGetterManager einrichten.



  • filth schrieb:

    es funktioniert nicht, wie es soll.

    Erstens mal ist "funktioniert nicht" keine Fehlerbeschreibung. Zweitens gibt es bei Konstruktoren eine Initialisierungsliste, mit der man konstante Member (dazu gehören Referenzen) initialisieren muss.

    // desktopPath als Const-Referenz übergeben!
    ConnectionManager::ConnectionManager(const string& desktopPath, IconGetter& icons)
    : desktopAddress(desktopPath)  // Initialisierungsliste
    , myIcons2(icons)              // vor dem Ctor-Rumpf
    {
        // Konstruktorrumpf ist leer
    }
    

    filth schrieb:

    wie ist es möglich ein Objekt an eine andere Klasse zu übergeben und dort global sichtbar zu machen?

    Grundsätzlich frage ich mich, was du damit bezweckst. Soll es wirklich global sein (dann käme eben static in Frage) - was ich bezweifle? Oder muss das Objekt an eine Instanz der Klasse übergeben werden und von dieser Instanz aus sichtbar sein? Beschreibe dein Problem ein wenig genauer...


Log in to reply