Klasse wird Global nicht erkannt


  • Administrator

    Grüsse zusammen,

    Ich habe eine Klasse erstellt COptions abgeleitet von CObject. Da ich die Optionen überall brauche, dachte ich mir, ich leg sie Global an. Ich habe daher eine neue Headerdatei eingefügt, welche wie folgt aussieht:

    ////////////////////////////////////////////////////////////////
    // Global.h
    
    // Headerdatei mit globalen Werten.
    
    #include "Options.h"
    
    namespace Global
    {
    	enum EEndDialog
    	{
    		ED_GOTO_PLAYERSOVERVIEW				= 12,
    		ED_GOTO_TEAM,
    		ED_GOTO_TEAMSOVERVIEW,
    		ED_GOTO_GAMESOVERVIEW
    	};
    
    	COptions theOptions;
    };
    

    Wenn ich jetzt irgendwo anderst in einem cpp Global.h includiere und dann in einem Funktionsrumpf probiere auf theOptions zuzugreifen geht das nicht.

    void IrgendeineFunktion(...)
    {
        // ...
        Global::theOptions;    // Wenn ich einen Punkt hinter theOptions setze, kommt "IntelliSense: 'No additional information available'"
    }
    

    Wenn ich aber folgendes Schreib funktioniert IntelliSense richtig:

    void IrgendeineFunktion(...)
    {
        // ...
        COptions optio;
        optio.Irgendwas;        // Nach dem Punkt zeigt mir IntelliSense alles an, was zur Klasse COptions gehört.
    }
    

    Es geht mit IntelliSense übrigens auch nicht, wenn ich den namespace weglasse.

    Kompilieren funktioniert übrigens ohne Problem, es geht nur um IntelliSense. Und ich frage mich wieso es global nicht geht. Bzw. was kann ich dagegen tun?

    Oder vielleicht noch eine andere Frage. Wie würdet ihr die Optionen sonst anlegen, wenn sie überall benötigt werden?

    Grüssli und danke für die Hilfe im voraus.


  • Administrator

    Keiner eine Idee? Nicht mal ein verirrter Gedanke? Oder bin ich zu aufdringlich, wenn ich erwarte, dass innert 4 Stunden immerhin eine verirrte Antwort hierher gefunden hat?

    (oder anderst gesagt ... push) ^^

    Grüssli



  • Die COptions Klasse liegt nicht in dem Namespace, oda?


  • Administrator

    ne liegt sie nicht. Aber wie gesagt, es geht auch ohne Namespace nicht.

    Grüssli



  • Welche Version von VS?


  • Administrator

    Visual Studio .Net ... also 2003 oder Version 7.1.3088

    Grüssli


  • Administrator

    *holt den Thread aus Seite 2 wieder hervor* 😃
    Ne ich lass nicht locker, ich will jetzt, dass man mir hilft! ^^

    Grüssli



  • Hallo,
    da es sich hier nicht um ein Standard-C++ Problem sondern um ein Problem mit dem IntelliSense-System des Visual Studios handelt, verschiebe ich dich mal entsprechend.

    Btw:
    Ein Element mit Linkage in einen Header zu definieren (wie dein COptions-Objekt) ist keine gute Idee. Spätestens wenn dein Header von zwei cpp-Dateien inkludiert wird, wirst du Probleme mit beim Linken bekommen. Besser wäre eine reine Deklaration im Header (extern COptions theOptions;) und dann eine einmalige Definition in einer cpp-Datei.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Administrator

    Kann mir einer erklären, was der Thread im C++ Forum zu suchen hatte? Ich habe ihn doch erst letzten von Seite 2 des MFC Forums hervorgeholt. 😕

    Naja, jetzt isser ja zumindest am richtigen Ort.
    @HumeSikkins
    Wenn ich extern mache, dann wird das Teil gar nicht erkannt. Hatte ich schon ausprobiert. Dann findet Intellisense nicht mal die Variable. Und der compilier meine ich hatte sogar gemeckert, dass er die Variable nicht finde.

    Grüssli


Anmelden zum Antworten