Visual C++ 6.0, IntelliSense



  • Jo #include "datei.h"

    naja die Pfade müssen ja korrekt sein denn es lässt sich auch kompilieren.

    Die Struktur sieht ungefähr so aus:

    main.cpp:
    #include "class.h"

    class.h:
    class bla
    {
    };

    #include "a.h"

    a.h:
    class abc
    {
    };

    #incldue "b.h"

    b.h:
    class bca
    {
    };

    #include "c.h"

    c.h:
    class dbc
    {
    };

    so und wenn ich mich jetzt in c.h befinde, so funktioniert gar nix was die Listen angehen. (also wenn ich die klammer bei MessageBox aufmache, erscheint nichts).
    Wenn ich mich allerdings in der main.cpp befinde, und ich zeiger auf die verschiedene classes schreibe (jede übergeordnete klasse hat einen zeiger auf die nächste klasse, also quasi pbla->pabc->pbca->pdbc, funktioniert die Auflistung nur bis pbca, danach ist schluss (mit VA und ohne VA)
    Hoffe das ist jetzt einigermaßen versztändlich?

    Natürlich befinden sich die header dateien in unterschiedlichen Verzeichnissen...

    Gruß,

    Mark



  • hm, keine Ahnung, was da schief läuft ... Aber wieso machst du deine Includes an's Ende der Headerdateien?



  • Ich habe hier ein Testprojekt erstellt, wo der Fehler auftritt (sowohl in VC als auch in VA)

    http://users.skynet.be/mark.foti/Test.zip

    (ungefähr 3 kb groß)

    Die includes werden so gemacht, weil die klasse B (im test projekt) mehrere klassen beinhaltet und jede klasse auf die anderen klassen zugreifen müssen.
    Deswegen müssen doch erst alle klassenköpfe gemacht werden.
    Geht das auch ander?

    Gruß,

    Mark



  • Kannst du mir ne plausible erklärung für so nen Quark geben?

    class Class1::Class2::Class3
    


  • Wie würdest du es machen??



  • Ganz normal ? Dann klappts nämlich auch mit dem IntelliSense:

    .\main.cpp:

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    
    #include "A\\class1.h"
    
    void main()
    {
    	pClass1 = new Class1();
    
    	pClass1->pClass2-> pClass3->Test();
    }
    

    .\A\class1.h:

    #include "B\\class2.h"
    
    class Class1
    {
    public:
    	Class1();
    	~Class1();
    
    	Class2 *pClass2;
    
    	private:
    } *pClass1 = NULL;
    
    Class1::Class1()
    {
    	pClass2 = new Class2();
    }
    
    Class1::~Class1()
    {
    }
    

    .\A\B\class2.h:

    #include "C\\class3.h"
    
    class Class2
    {
    public:
    	Class2();
    	~Class2();
    
    	Class3 *pClass3;
    
    	private:
    };
    
    Class2::Class2()
    {
    	pClass3 = new Class3();
    }
    
    Class2::~Class2()
    {
    }
    

    .\A\B\C\class3.h:

    class Class3
    {
    public:
    	Class3();
    	~Class3();
    
    	void Test();
    
    private:
    };
    
    Class3::Class3()
    {
    }
    
    Class3::~Class3()
    {
    }
    
    void Class3::Test()
    {
    	Beep(2000,1000);
    }
    


  • Aber somit ist jede klasse global!



  • Well?



  • Naja bei 3 klassen ist das kein thema, aber wenn man 90 klassen hat, wo manche sehr ähnlich sind, dann wäre es schon ganz gut wenn es nicht global wäre!

    Ausserdem, was ist denn falsch an meinem source?
    Ist es nicht immer noch ein Fehler der Software das dort die Anzeige nicht funzt?



  • Dein Source ist schon korrekt, aber recht ungewöhnlich. So Klassenverschachtelungen werden normalerweise nie benutzt, weswegen der Bug wohl bisher auch noch nie jemandem aufgefallen ist *G*


Anmelden zum Antworten