Benötige Hilfe bei der Benutzung einer Variable der eigenen Klasse
-
Hallo Leute,
ich schreib schon seit längerem an benutzerdefinierten Klassen ...
Jetz mein Problem, ich hab zwei Klassen, eine ist ganz normal und hat ein paar Variablen, die andere soll jetzt eine eigene Variable vom typ der ersten Klasse haben. Das Problem tritt auf, wenn ich die Klassen in zwei verschiedenen Header-Dateien habe. Hier mal Anschaulicher:Datei KLASSE1.h
class KLASSE1 { int a, b; };
Datei KLASSE2.h
class KLASSE2 { :warning: KLASSE1 ab; //Problem besteht hier int c; };
Hoffe das ist ausführlich genug, bei Fragen stehe ich gerne zur Verfügung ...
Gruß Simon
-
In der Source-File von KLASSE2 #include "KLASSE1.h" (Oder wie die Datei heißt) schreiben.
Aber du musst dabei die Include-Guards beachten, sonst gibts multiple-definition Fehler.
-
Hallo
private, public
Mfg.
way
-
1. "Problem besteht hier" oder "Ein Problem tritt auf" sind keine Fehlerbeschreibungen.
2. Ich nehme mal an, der Kompiler meckert, dass er die Klasse nicht kennt, dann fehlt das folgende:// Klasse1.hpp #ifndef KLASSE_1_HEADER_GUARD_94373 #define KLASSE_1_HEADER_GUARD_94373 class Klasse1 { int a, b; }; #endif // KLASSE_1_HEADER_GUARD_94373 // Klasse2.hpp #ifndef KLASSE_2_HEADER_GUARD_443573 #define KLASSE_2_HEADER_GUARD_443573 #include "Klasse1.hpp" class Klasse2 { Klasse1 test; }; #endif // KLASSE_2_HEADER_GUARD_443573
Was ein Header Guard ist, darüber solltest du dich am besten gleich auch informieren.
3. Leg dir ein anständiges C++ Buch zu, das sind absolute Grundlagen:
- C++ Primer
- Thinking in C++ 1&2Grüssli
-
Hallo Leute,
Danke für die Antworten.
das mit dem Header Guard kenn ich schon, und hab es auch in beiden Headern verwendet. Ich hab auch den Header der Klasse1 included.Aber ich versteh nicht ganz, was way mit public, private meint, weil ich komm ja erst garnicht soweit, dass ich die Member "a" und "b" benutzen kann.
Ich bekomme die Meldung
'KLASSE1' was not declared in this scope
ps. entschuldigung für die schlechte Beschreibung, aber ich weis einfach nicht mehr weiter, ich hoffe ihr wollt mir trotzdem noch helfe
Gruß Simon
-
way schrieb:
Hallo
private, public
Mfg.
wayAch, way... "private class" oder was?
-
varginator schrieb:
Ich bekomme die Meldung
'KLASSE1' was not declared in this scope
*sigh*
Und wo genau?
Hast du deine Fehlermeldung so lieb, dass du sie nicht mit uns teilen willst?Vielleicht hilft dir das hier weiter:
http://cplusplus.syntaxerrors.info/index.php?title=‘bar’_was_not_declared_in_this_scopeVor allem der Fehler ganz unten
Grüssli
-
Hallo
Ach, way... "private class" oder was?
Nä!
Mfg.
way
-
way schrieb:
Nä!
Aber dir ist bewusst, dass das Problem rein gar nichts mit
private
oderpublic
zu tun hat?
-
Nexus schrieb:
way schrieb:
Nä!
Aber dir ist bewusst, dass das Problem rein gar nichts mit
private
oderpublic
zu tun hat?Ist ihm nicht. Zumindest wäre es mir neu dass er auch nur irgendwas von dem versteht was hier gepostet wird.
Ich tippe übrigens auf folgendes Problem:
Klasse1.hpp inkludiert Klasse2.hpp und Klasse2.hpp inkludiert Klasse1.hpp
Wenn das der Fall ist, ist die notwendige Lösung eine Foward Deklaration.
-
Hallo
Aber dir ist bewusst, dass das Problem rein gar nichts mit private oder public zu tun hat?
Jo, habe ich etwa behauptet, es getan zu haben?
Mfg.
way
-
way schrieb:
Aber dir ist bewusst, dass das Problem rein gar nichts mit private oder public zu tun hat?
Jo, habe ich etwa behauptet, es getan zu haben?
Jo, das hast du implizit, indem du deine Antwort zu einer Frage hier reingestellt hast! Vorausgesetzt, mit dieser im Kontext seltsamen Formulierung meinst du, was ich denke...
-
main.cpp
#include <iostream> #include "Klasse2.h" using namespace std; int main() { cout << "Hello world!" << endl; return 0; }
Klasse1.h
#ifndef KLASSE1_H_INCLUDED #define KLASSE1_H_INCLUDED class Klasse1 { }; #endif // KLASSE1_H_INCLUDED
Klasse2.h
#ifndef KLASSE2_H_INCLUDED #define KLASSE2_H_INCLUDED #include "Klasse1.h" class Klasse2 { Klasse1 k1; }; #endif // KLASSE2_H_INCLUDED
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 0 warnings
-
Hallo liebe Helfer,
danke für die vielen Antworten.
Shade of Mine hat mir die richtige Lösung beschrieben, aber auch noch danke an alle, die, wenn auch genervt, meine Frage versucht haben zu verstehen und geantwortet haben.Ich habe eine Datei, in der alle Header includiert werden, die ich brauche, und diese Datei wird auch in jeder einzelnen dieser Dateien includiert, weil ich öfters auf alle übergreifen muss (in beide Richtungen).
Ich bitte nochmal um Entschuldigung, weil ich mein Problem nicht gescheid beschrieben habe.
Gruß Simon