tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
406
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Hallo
    Nun ich habe mal wieder en Problemchen
    Diesmal ist es so das ich eine Funktion habe die nichts mit einer Klasse zu tun hat, also:
    Code cpp:
    1
    2
    3
    
    void abc()
    {
    }
    (Als bsp. )
    Nun habe ich in meiner Klasse Cabc eine Varible XY( Typ float ). Ich möchte nun die Variable XY in Funktion abc abfragen können. Klar erster Gedanke Pointer als Parameter. Aber ne ist nicht. Ich darf der Funktion keinen Parameter geben da sieh von einer anderen Funktion aufgerufen wird auf die ich kein Einfluss habe. Wenn ich in der Funktion einfach Cabc blabla; mache und dann mit blabla aie Variable abfragen möchte, ist die natürlich leer -.-
    Nun wie kriege ich das hin?
    Danke
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  2. #2
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.358
    Blog-Einträge
    4
    Ohne Zugriff auf das Objekt geht das nicht.

    Da fällt mir gerade nur die Möglichkeit ein, in deiner Klasse die Instanzen zu speichern, um sie dann per statische Methode abfragen zu können. Alle anderen Möglichkeiten fallen ja weg, da du keinen Einfluss auf die andere Funktion hast.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  3. #3
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Danke, aber...
    ... dass doofe ist nur das ich sehr viel Instanzen von meiner Klasse erstellen werde. Und immer nur die Instantz abzuspeichern... uuf. Ich dachte acuh schon an globale Variablen aber das führt zu unsauberem Code-.- Und vorallem wenn man sich doof anstellt zu Linker fehlern O.o Also andere Methoden gibts wirklich garnicht?
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  4. #4
    Eburneolus Eburneolus ist offline Mitglied
    Registriert seit
    Mar 2011
    Beiträge
    15
    Wie wärs damit:

    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    // Cabc.h
     
    class Cabc 
    {
        private:
            float XY;
            static float shareCurXY;
        public:
            float getXY();
            static void setShareCurXY(const float& sC);
            static float getShareCurXY();   
    };

    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    // Cabc.cpp
    #include "Cabc.h"
     
    float Cabc::shareCurXY = 9000;
     
    float Cabc::getXY()
    {
        return XY;
    }
     
    void Cabc::setShareCurXY(const float& sC)
    {
        Cabc::shareCurXY = sC;
    }
     
    float Cabc::getShareCurXY()
    {
        return Cabc::shareCurXY;
    }

    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    // main.cpp
     
    #include "Cabc.h"
     
    void abc();
     
    int main()
    {
        Cabc cabcInst;
        .
        .
        Cabc::setShareCurXY(cabcInst.getXY());
        tolleFunktion(abc); 
        .
        .
        return 0;
    }
     
    void abc()
    {
        float xy = Cabc::getShareCurXY();
        process(xy);
    }
    Geändert von Eburneolus (26.11.11 um 00:43 Uhr)
     

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von MSVCplusplus Beitrag anzeigen
    Ich dachte acuh schon an globale Variablen aber das führt zu unsauberem Code-.-
    Bei dem was du vorhast fürchtest du unsauberen Code?
    Zitat Zitat von MSVCplusplus Beitrag anzeigen
    Also andere Methoden gibts wirklich garnicht?
    Falls du das Problem nicht übermäßig vereinfacht hast und die Funktion tatsächlich keine Argumente bekommt, dann mußt du eine Möglichkeit schaffen irgendwie global auf den Wert einer bestimmten Instanz (die möchtest doch auf ein Instanzattribut zugreifen oder?) zuzugreifen. Ob du diese globale Variable in einem Namensraum steckst oder in eine Klasse oder einfach im globalen Namensraum ist dann fast nur Geschmackssache.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 20.09.11, 17:47
  2. Warum Member von Klassen Private?
    Von Rene42 im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 01.06.09, 12:17
  3. Member-Variable einer MFC-Klasse in einfache Klasse einfügen
    Von cappa555 im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 12.12.08, 17:33
  4. Antworten: 6
    Letzter Beitrag: 15.05.08, 19:12
  5. Antworten: 2
    Letzter Beitrag: 06.01.08, 22:11