Klassen übergreifende Variablen erstellen



  • Hallo leute,

    kann mir bitte jemand sagen wie ich ein und die selbe variable (string) in mehreren klassen nutzen kann.

    kurze simple beispiele wären echt nett.



  • oder besser noch, wie kann ich in einer klasse, die variable der anderen klasse nutzen.

    oder nein....

    noch besser, wie kann ich eine variable, eines bereits erzeugten objektes in der cpp einer anderen klasse nutzen.



  • class A
    {
    private:
    	string& s;
    public:
    	A(string& s) : s(s) {}
    };
    
    class B
    {
    private:
    	string& s;
    public:
    	B(string& s) : s(s) {}
    };
    
    int main()
    {
    	string s = "Scherz";
    	A a(s);
    	B b(s);
    }
    

    Frage nochmal überdenken?



  • mittelzumzweck schrieb:

    noch besser, wie kann ich eine variable, eines bereits erzeugten objektes in der cpp einer anderen klasse nutzen.

    Auch das ergibt keinen Sinn. Hast du kein kleines Codebeispiel?



  • klar ich machs mal genauer.

    klasse1:

    erstellt ordner

    hier ein teilausschnitt

    {
                cout << "welche version von Firefox soll installiert werden? \nSyntax beachten Bsp. fuer Firefox 5.0.1 \" 5_0_1 \"" << endl;
                cin  >> ver;
                instpath="mkdir c:\\repository\\install\\ff";
                merge_str= instpath+=ver;
                system(merge_str.c_str());
    
                createi();
                startin();
            }
    

    dann wird dort eine firefox vers installiert.

    klasse2:

    in der anderen klasse soll eine INI datei erstellt werden.
    in dieser inidatei soll nun die zeile
    InstallDirectoryPath=C:\repository\install\ff"hier soll dann die ver variable rein"

    so.



  • mom ich gib lieber mal doch das code bsp.



  • fxinstaller

    #include <string>
    #include <iostream>
    #include <fstream>
    #include <cstdlib>
    #include <stdio.h>
    #include "fxinstaller.h"
    
    using namespace std;
    
            FXINST::FXINST()
            {
                cout << "welche version von Firefox soll installiert werden? \nSyntax beachten Bsp. fuer Firefox 5.0.1 \" 5_0_1 \"" << endl;
                cin  >> ver;
                instpath="mkdir c:\\repository\\install\\ff";
                merge_str= instpath+=ver;
                system(merge_str.c_str());
    
                createi();
                startin();
            }
            /////////////////////////////////////////////////////////////////////////////////////
    
            void FXINST::createi()
            {
                ofstream installer ("c:\\repository\\scripts\\fxinstall.bat ");
                    if(installer.is_open())
                        {
                            installer << "cd .." << endl;
                            installer << "cd .." << endl;
                            installer << "cd .." << endl;
                            installer << "cd c:\\repository\\ffrep"<< endl;
                            installer << "start /wait firefoxsetup" << ver <<".exe -ms /INI=C:\\repository\\scripts\\fx.ini" << endl;
                            installer.close();
                        }
                    else
                        {
                            cout <<"Datei Konnte nicht geoeffnet werden.";
                        }
            }
            void FXINST::startin()
            {
                system("start c:\\repository\\scripts\\fxinstall.bat");
            }
    

    inicreator

    #include "fxiniscript"
    
    using namespace std;
    
            FXINI::FXINI()
            {
                createi();
            }
            void FXINI::createi()
            {
                ofstream installer ("c:\\repository\\scripts\\fxini.ini ");
                    if(installer.is_open())
                        {
                            installer << "[Install]" << endl;
                            installer << "InstallDirectoryPath=C:\\repository\\install\\ff"<< endl;
                            installer << "InstallDirectoryName=Mozilla Firefox" << endl;
                            installer << "QuickLaunchShortcut=false"<< endl;
                            installer << "DesktopShortcut=false"<< endl;
                            installer << "StartMenuShortcuts=false"<< endl;
                            installer.close();
                        }
                    else
                        {
                            cout <<"Datei Konnte nicht geoeffnet werden.";
                        }
            }
    

    so. und bei der erstellung der ini, soll in der zeile

    installer << "InstallDirectoryPath=C:\\repository\\install\\ff"<< endl;
    

    nun die selbe versionsnummer reinkommen, wie beim fxinstaller.

    P.S die ganzen syntktischen fehler nicht beachten. habs nur eben dahingekrizelt



  • Entweder machst du ver in FXINST public oder

    class FXINST
    {
    public:
        const auto& version() { return ver; }
        ...
    

    Edit: Um mich der Haftung für mit diesem Tipp verbundene mögliche Schäden zu entziehen, weise ich explizit darauf hin, dass die erste Option die schlechtere Wahl wäre.


Anmelden zum Antworten