C2653 'identifier' is not a class or namespace name
-
Hallo, ich frage mich gerade, warum der Compiler meinen Header nicht kennen will. Vielleicht kann mir wer helfen.
Ich versuche eine Konsolenanwendung "aufzurüsten" und das gantze als MFC- Dialog zu realisieren. Die Probleme enstehen aber schon beim ersten Testen, und zwar bekomme ich direkt o.g. Fehlermeldung und eine ganze Reihe weiterer Fehler, die daraus resultieren.
#include <iostream> #include <fstream> #include <string> #include <stdexcept> #include "record.h" #include "stdafx.h" using namespace std; ClRecord::ClRecord(void) { (...) }ClRecord gibt es angeblich nicht, aber der zu dieser Klasse gehörende Header ist eingebunden (record.h), daher verstehe ich das nicht.
Ausserdem habe ich den Header in die von Visual standardmässig erzeugten Dateien X.cpp und xdlg.cpp so wie in die zugehörigen Header eingebunden. Was habe ich falsch gemacht/ vergessen? Bitte helft mir! Danke!
-
Hi,
poste doch mal bitte den Inhalt von record.h.
MfG.
-
Wenn du vorkompilierte Header benutzt, dann ignoriert MSVC alles, was vor der include-Direktive für die vorkompilierte Headerdatei steht.
Das heißt in deinem Fall: Entweder die Verwendung vorkompilierter Header abschalten, oder #include "stdafx.h" nach ganz oben.
-
So, hier ist der Header:
#include <string> #include <fstream> #include <list> #include "stdafx.h" using namespace std; class ClRecord { // Um in der Leseschleife (cReadData(...)) einfacheren Zugriff zu haben friend class ClBestand; private: // alle Daten werden hier erstmal als Strings gespeichert string cID; string cDate; string cNumber; string cTitle; string cPrint; string cFormat; string cLanguage; string cLocation; public: ClRecord(); string ShowID(void) {return cID} string ShowDate(void) {return cDate;} string ShowNumber(void) {return cNumber;} string ShowTitle(void) {return cTitle;} string ShowPrint(void) {return cPrint;} string ShowFormat(void) {return cFormat;} string ShowLanguage(void) {return cLanguage;} string ShowLocation(void) {return cLocation;} void cPrintData(ClRecord *drucke); }; class ClBestand { private: list<ClRecord*> bestand; list<ClRecord*>::iterator records; public: ClBestand* cReadData(ifstream &datei); void AddRec(ClRecord *eintrag); void TestAusgabe(); };
-
MFK schrieb:
Wenn du vorkompilierte Header benutzt, dann ignoriert MSVC alles, was vor der include-Direktive für die vorkompilierte Headerdatei steht.
Das heißt in deinem Fall: Entweder die Verwendung vorkompilierter Header abschalten, oder #include "stdafx.h" nach ganz oben.
Versuch das mal bitte und schreib obs geklappt hat. *Interesse drann hab*
-
Scheint halbwegs geklappt zu haben(er kennt meine Kalssen jetzt, leider "zu gut"),jetzt habe ich das Problem, dass er den meinigen Header wohl irgendwie mehrfach an die falschen Stellen einbindet (mehrere Class Type Redifinition und ambiguous Symbol Errors). Wo muss ich denn meinen eignenen Header jetzt einbinden und wo nicht?
-
Dieses Problem habe ich nun gelöst, mittels
#pragma once..aber hätte mir Doch einer von Euch Cracks auch mal sagen können...