Variableninhalt aus Headerdatei auslesen?

Newtonianer

Grünschnabel
Hallo Zusammen,

ich habe ein kleines Problemchen und sitze mittlerweile schon seit mehreren Stunden daran es irgendwie zu beheben.
Es geht darum, den Wert/Inhalt einer Variablen aus einer cpp-Datei einer Headerdatei zu übergeben und wiederrum mit einer weiteren/anderen cpp-Datei an den Wert/Inhalt dieser Variablen zu gelangen.
Mir ist bewusst, dass der Schritt über den Header unnötig ist und man es auch ganz einfach anders lösen könnte, aber mich würde interessieren ob es geht.

Hier mal ein leichter Code der das Problem veranschaulichen soll:

Die Datei test.cpp:
Code:
#include <iostream>

int main()
{

int aa=1;
int bb=2;
int cc=3;
}
Die Headerdatei test.h:
Code:
#ifndef TEST_H
#define TEST_H

class MyClass
{
public:
    MyClass(int aa, int bb, int cc);
};

#endif
Soweit funktioniert das. Wenn ich mit dem Debugger über das Programm gehe, wird der Klasse MyClass bzw. dem Konstruktor MyClass in der Headerdatei die Integers aa=1, bb=2 und cc=3 übergeben.

Wie aber komme ich über eine andere cpp z.B. namens prog.cpp an die Integers aus der Headerdatei?

Z.B. mit:
Code:
#include <iostream>
#include "test.h"

int main()
{
    std::cout << aa << std::endl;
    std::cout << bb << std::endl;
    std::cout << cc << std::endl;    
}
kommt man nicht sehr weit, hierbei sind aa, bb und cc nicht deklariert, trotz dem #include "test.h". Setze ich aber noch ein
Code:
MyClass.
vor aa, bb und cc im obrigen Aufruf, heißt es, dass aa, bb und cc keine Elemente von der Klasse MyClass sind.

Wer kann mir helfen? Vielen Dank!

Viele Grüße,
Tobi
 
Hi.
Die Datei test.cpp:
Code:
#include <iostream>

int main()
{

int aa=1;
int bb=2;
int cc=3;
}
OK, du hast 3 lokale Variablen in der main Funktion definiert. Sollte das jetzt irgendwas veranschaulichen?
Die Headerdatei test.h:
Code:
#ifndef TEST_H
#define TEST_H

class MyClass
{
public:
    MyClass(int aa, int bb, int cc);
};

#endif
Soweit funktioniert das. Wenn ich mit dem Debugger über das Programm gehe, wird der Klasse MyClass bzw. dem Konstruktor MyClass in der Headerdatei die Integers aa=1, bb=2 und cc=3 übergeben.
In diesem Fall sind aa, bb und cc Parameter des Konstruktors und auch nur innerhalb des Konstruktors der Klasse gültig und zugreifbar.

Evlt. wolltest du ja Attribute für die Klasse definieren?
C++:
class MyClass {
private:
  int aa, bb, cc;
public:
  MyClass(int aa, int bb, int cc) : aa(aa), bb(bb), cc(cc) {
  }
  int getAA() const { 
    return aa;
  }
  void setAA(int new_aa) {
    aa = new_aa;
  }
  // usw.
};
Gruß
 
Zurück