klassen problem
-
ok, habs in int main(void) geändert, leider besteht der fehler weiterhin
desweiteren wird error C2065: 'c_schueler' : undeclared identifier angezeigt
der name der klasse lautet aber c_schueler
-
und steht die klasse auch darüber? Generell ist immer der erste Compiler-Fehler der wichtige.. waren da vielleicht noch mehr?
-
kopier mal folgendes 1 zu 1 in die datei, in der die main funktion bei dir steht:
#include <iostream> using namespace std; class c_schueler { public: void eingeben () { cout << "c_schueler::eingeben wurde aufgerufen\n"; } }; int main () { c_schueler schueler1; schueler1.eingeben(); }
und sag, dass das nicht funktioniert
wir brauchen einfach mehr informationen über deinen Code
-
also das mit dem kopieren wird schwer weil ich alles als ein "einfaches projekt" in mvc 6 erstellet habe...werde es mal als neues austesten
so sieht die klasse aus
class c_schueler { public: void anzeigen(); void eingeben(); c_schueler(); virtual ~c_schueler(); private: double ermittle_note(); double note; int klausuren; int punkte; char nname[20]; char vname[20]; };
@DrGreenthump
da sind insgesamt 6 errors der erste : error C2065: 'c_schueler' : undeclared identifier
-
ok.
die datei main.cpp:int main () { c_schueler schueler1; schueler1.eingeben(); }
diese datei sieht der compiler als einheit an (eine Übersetzungseinheit)
in dieser Einheit steht aber nichts davon, was c_schueler ist.
der Compiler kennt c_schueler nicht, und ich gehe einmal davon aus, dass das bei dir der Fall ist.Du hast c_schueler in einer eigenen Datei, nicht?
dann musst du diese Datei einbinden, damit der Compiler weiß, was c_schueler ist:#include "datei_in_der_c_schueler_deklariert_ist.h" int main () { c_schueler schueler1; schueler1.eingeben(); }
damit wird der inhalt von "datei_in_der_c_schueler_deklariert_ist.h" in diese Übersetzungseinheit mit eingebunden. Der Compiler weiß jetzt, dass c_schueler eine Klasse ist, und dass mit
c_schueler schueler1;
eine instanz dieser klasse erzeugt werden soll, und dass mit
schueler1.eingeben();
die funktion c_schueler::eingeben (); für das objekt schueler1 aufgerufen werden soll.
-
so hab den code mal in einem leeres projekt eingefügt...compilieren geht nur
beim ausführen bekommer ich 2 errors und zwarerror LNK2001: unresolved external symbol _WinMain@16
fatal error LNK1120: 1 unresolved externalsgibt es vielleicht ein "how to" zum thema mvc "einfache projekte"
-
ich weiß leider nicht mehr genau, wie das bei MSVC heißt, aber ich glaube, du musst bei "neues Projekt" -> "Win32 Konsolenanwendung" anklicken.
-
also die klasse mit dem namen c_schueler muß in main (die es bei mir nicht als cpp datei gibt) eingefügt werden und zwar mit #include "c_schueler.h"
hab ich gemacht( im ordener globals) und siehe da 2 neue errors
error C2039: 'eingeben' : is not a member of 'c_schueler'
error C2039: 'anzeigen' : is not a member of 'c_schueler'
beide male mit dem zusatzsee declaration of 'c_schueler'
ich glaub das wars für heute
-
ja das stimmt und dann ein leeres projekt wählen...
das schwerste ist aber von der dem leeren alles auf ein einfaches projekt umzustellen, weil beim einfachen die ganzen dateien schon teilweise vorgegeben sind (to do hier und da)
gibt es da wirklich keine tutorials?
-
Wie wäre es dazu mal mit der c_schueler.cpp Datei (oder wie auch immer die heißen mag) und nicht nur mit der Headerdatei?
Hast du die Header- und die Quelldatei von c_schueler dem Projekt hinzugefügt und auch in dem Projektordner?Leere Projektmappe anlegen, Dateien hinzufügen, indem du mit der rechten Maustaste auf Quelldateien bzw. Headerdateien klickst und "Vorhandenes Element hinzufügen..." wählst. Die Dateien in den selben Ordner packen wie die Projektdatei, dann ne neue Cpp-Datei mit der main-funktion und aufrufen. Sollte wenn dann wenn per #include "c_schueler.h" bekannt gemacht und im Code keine Fehler mehr gibt, keine Probleme mehr geben.
Code-Hacker