Zugriff auf Klassenfunktion via Zeiger
-
Header Klasse Eins:
#ifndef EINS_H #define EINS_H #include <string> using namespace std; class Eins{ public: Eins(string name); ~Eins(); int getA(); private: int a; }; #endifSource Klasse Eins:
#include "eins.h" #include <string> using namespace std; Eins::Eins(string name) { name = "aa"; a = NULL; } Eins::~Eins() {} int Eins::getA() { return a; }Header Klasse Zwei:
#ifndef ZWEI_H #define ZWEI_H #include "weatherstation.h" class Zwei{ public: Zwei (Eins *test); ~Zwei(); void Aufruf(); private: Eins *myTest; }; #endifSource Klasse Zwei:
#include "zwei.h" #include "eins.h" class Zwei{ Zwei::Zwei(Eins *test) { *myTest = *test; } Zwei::~Zwei() {} void Zwei::Aufruf() { int newA = myTest->getA(); }
-
Sorry für den Doppelpost.
Hier ist die Fehlermeldung:
Error error C2039: 'getA' : is not a member of 'Eins'
-
#include "weatherstation.h" ?
-
Da steht normalerweise "#include eins.h" ist nur eine Abwandlung der Namen meines Projekts.
Ich habe mal ein wenig rumgetestet..
Wenn ich mir einen main.cpp file erstelle und die Klasse Eins einbinde via#include "eins.h"und eine Variable erstelle:
Eins myEins("xyz");kann ich die Funktion problemlos aufrufen:
myEins.getA();Will ich das gleiche in der Source Datei von Klasse Zwei machen, ist es nicht möglich.
-
MrRatlos schrieb:
Da steht normalerweise "#include eins.h" ist nur eine Abwandlung der Namen meines Projekts.
Du willst ja offensichtlich keine Hilfe ...
-
Natürlich suche ich nach Hilfe aber dafür muss ich ja keine unrelevanten Informationen posten.
Klasse Eins verwende ich schon etwas länger und das problemlos.
Ich habe nur das Problem dass ich in meiner zweiten Klasse nicht auf die Funktionen der ersten zugreifen kann. Und ich denke dafür sollte die abgespeckte Version ausreichen.
Es ist genau die vorgehensweise dargestellt die bei mir fehlerhaft ist, sowie die Art und Weise der #defines und #includes.Der Konstruktor bekommt eine Addresse vom Typ Klasse Eins.
Den ankommenden Zeiger übertrage ich auf den Zeiger meiner Klasse um ihn innerhalb der Klasse frei nutzen zu können.
Eine Funktion soll auf die Getter Methode zugreifen. Das funktioniert nicht.
Alle weiteren Funktionen meiner Klasse, die ihre Arbeit tun sind nicht betroffen.
-
MrRatlos schrieb:
Natürlich suche ich nach Hilfe aber dafür muss ich ja keine unrelevanten Informationen posten.
Du kannst aber offensichtlich nicht zwischen relevanter und irrelevanter Information unterscheiden, also musst du alles posten.
Oder besser, du postest ein vollständiges Minimalbeispiel. Dazu gehört, dass der Code compilierbar ist und immer noch den Fehler produziert.
-
Bashar schrieb:
Dazu gehört, dass der Code compilierbar ist und immer noch den Fehler produziert.
bzw. den betreffenden Compilerfehler hervorruft.
-
Caligulaminus schrieb:
bzw. den betreffenden Compilerfehler hervorruft.
bzw. die betreffenden Compilerwarnungen hervorruft.
-
@MrRatlos
Bashar hat nicht aus langweile gesagtPoste bitte nochmal vollständigen Code. Und die vollständige Fehlermeldung. Beides Copy&Paste.
Es passiert nämlich nicht selten, das der Code den Leute präsentieren nämlich gar keinen Fehler hat, sondern der Fehler nur im code ist, den sie geheimhalten.
-
Genau. Und schön zusammengefasst steht das ganze hier. Bitte lies den Post sorgfältig, damit sparst du dir in Zukunft unnötige Fragen und einiges an Zeit.