auf public attribut anderer Klasse zugreifen.



  • Also ich will ais einer anderen Klasse auf ein Element zugreifen, welches sich in einer anderen Klasse befinden. Ich nutze VS2008.
    Dieses findet aber das andere Element nicht. Hier mein Beispielcode.

    A.h

    class A 
    {
    public:
    //constructor
    A();
    int a;
    }
    

    A.cpp

    A(){
    a=0;
    }
    
    A expample;
    

    B.h

    class B
    {
        void test();
    }
    

    B.cpp

    include "A.h"
    
    void test(){
    example.a=1;
    }
    

    sobald ich example.a eingebe findet er dies nicht.



  • Da kann ich deinen Compiler gut verstehen...

    Wo soll er denn nach example suchen?

    Wenn es ne statische Variable sein soll, mußt du sie auch noch in einem (inkludierten) Header definieren...

    Bei dir wohl in A.h

    falls es keine statische Variable ist, mußt du erklären, wo sie herkommt 🙂



  • CSpille schrieb:

    Wenn es ne statische Variable sein soll, mußt du sie auch noch in einem (inkludierten) Header definieren...

    Nein, deklarieren.



  • krümelkacker schrieb:

    CSpille schrieb:

    Wenn es ne statische Variable sein soll, mußt du sie auch noch in einem (inkludierten) Header definieren...

    Nein, deklarieren.

    argh...

    Das lag wohl an der Uhrzeit 05:25 😉



  • Vermutlich meinst Du sowas?

    include "A.h" 
    
    void test(){ 
    A Example;  // Erzeuge ein Objekt A namens Example
    example.a=1; // Greife auf Example zu
    } // Zerstöre das Objekt Example
    


  • also, zB so:

    // dings.hpp
    #ifndef DINGS_HPP_INCLUDED
    #define DINGS_HPP_INCLUDED
    
    class dings
    {
    public:
      explicit dings(int i=0) : foo(i) {}
      int foo;
    };
    
    extern dings obj; // <-- Deklaration
    
    #endif
    
    // dings.cpp
    #include "dings.hpp"
    
    dings obj (42);
    

    Aber auf SIF aufpassen.

    kk



  • jop super danke, das mit extern wars ;).

    Nur meckert er nun folgendes beim compilieren:

    .obj : error LNK2001: Nicht aufgelöstes externes Symbol ""class A a"



  • Wahrscheinlich hast du die Definition in der .cpp-Implementierungsdatei vergessen. Also das:

    dings obj(42);
    


  • CSpille schrieb:

    krümelkacker schrieb:

    CSpille schrieb:

    Wenn es ne statische Variable sein soll, mußt du sie auch noch in einem (inkludierten) Header definieren...

    Nein, deklarieren.

    argh...

    Das lag wohl an der Uhrzeit 05:25 😉

    Das liegt einfach daran, dass die Begriffe (vorallem definieren) beschissen sind, aber mir fällt auch nix besseres ein.



  • ihr habt recht, ist alles n bisl "unsauber", ich schreib einfach ne 3 zeilen memberfunction die das zurückliefert.

    danke


Log in to reply