Eine Deklaration ist nicht mit ... Kompatibel
-
Hallo CC+ler,
folgendes Problem habe ich und zwar habe ich beim erstellen der Funktionen ein Problem, er gibt mir folgenden Fehler aus
" 7 IntelliSense: Die Deklaration ist nicht mit ""<error-type> CArtist::getAdresse()" (deklariert in Zeile 24 von "c:\users\balbao\documents\visual studio 2010\projects\künstlrtdatenbank\künstlrtdatenbank\Artist.h")" kompatibel. c:\users\balbao\documents\visual studio 2010\projects\künstlrtdatenbank\künstlrtdatenbank\artist.cpp 48"
undzwar bei allen Funktionen die ich dort habe. Hier der Quellcode
#1
#include "Artist.h" #include <string> #include <iostream> using namespace std; CArtist::CArtist(void) { } CArtist::~CArtist(void) { } CArtist::CArtist(string strName, string strAdresse, string strKurzbeschreibung, int iGeburtsdatum, Genre Typ) { } CArtist::CArtist(const CArtist &CArt) { } void CArtist::setKurzbeschreibung(string Kurzbeschreibung) { } void CArtist::setName(string Name) { } void CArtist::setAdrese(string Adresse) { } void CArtist::setGeburtsdatum(int Geburtsdatum) { } string CArtist::getKurzbeschreibung() { } string CArtist::getName() { } string CArtist::getAdresse() { return strAdresse; } int CArtist::getGeburtsdatum() { return iGeburtsdatum; }#2
//#pragma once //#ifndef CArtist_h //#define CArtist_h enum Genre { BildendeKunst, Musik, Literatur, DarstellendeKunst }; class CArtist { private: string strName; string strAdresse; string strKurzbeschreibung; int iGeburtsdatum; public: CArtist(string strName, string strAdresse, string strKurzbeschreibung, int iGeburtsdatum, Genre Typ); CArtist(const CArtist &CArt); void setKurzbeschreibung(string Kurzbeschreibung); void setName(string Name); void setAdrese(string Adresse); void setGeburtsdatum(int Geburtsdatum); string getKurzbeschreibung(); string getName(); string getAdresse(); int getGeburtsdatum(); virtual void printArtist(); CArtist(void); ~CArtist(void); }; //#endifHoffe ihr könnt mir helfen.
-
Bitte einmal das anklicken.
Zu deinem Problem: Du scheinst den
<string>Header in deinem Header nicht einzubinden (dort bindest du überhaupt nichts ein, bemerke aber dass ein Modul immer alle Abhängigkeiten selbst bereitstellen muss).
Außerdem ignorierst du den Namensraum, in dem sich**std::**stringbefindet.
-
Bindet er ihn nicht in den ersten Zeilen ein ?
#include "Artist.h" #include <string> #include <iostream> using namespace std;
-
Balbao schrieb:
Bindet er ihn nicht in den ersten Zeilen ein ?
#include "Artist.h" #include <string> #include <iostream> using namespace std;Nein. Das ist die Source. Der (eigentlich alle) Header wird zuerst Zeichen für Zeichen in die Source kopiert. Dann fängt die kompilierung an. Theoretisch müsste
<string>und<iostream>(obwohl er <iostream> gar nicht braucht) vor dem Header eingebunden werden. Weil das aber sowieso bescheuert ist, sollte er diese Header doch gleich im eigenen Header einbinden.
-
Nachdem ich das jetzt in der Artist.h eingebunden habe, ist der Quellcode bis hier hin fehlerfrei. Danke!
-
balbao schrieb:
er gibt mir folgenden Fehler aus
" 7 IntelliSense: ...
Bitte Fehlermeldungen vom Compiler oder Linker angeben, nicht von Editor-Features wie Intellisense.
-
Weil ich das offensichtlich etwas schwammig formuliert habe, nochmal was ich meine:
//#pragma once //#ifndef CArtist_h //#define CArtist_h #include <string> #include <iostream> //Brauchst du das hier? Sonst kannst du den weglassen enum Genre { BildendeKunst, Musik, Literatur, DarstellendeKunst }; class CArtist { private: std::string strName; std::string strAdresse; std::string strKurzbeschreibung; int iGeburtsdatum;Edit: Ah, du bist schon selbst drauf gekommen.

-
Korrigiert (bezogen auf Initialposting) und stark vereinfacht:
artist.h
#ifndef DEIN_PROJECT_ARTIST_H_INCLUDED #define DEIN_PROJECT_ARTIST_H_INCLUDED #include <string> enum Genre { BildendeKunst, Musik, Literatur, DarstellendeKunst }; struct Artist { std::string name; std::string adresse; std::string kurzbeschreibung; int geburtsdatum; // als int?! wenn du meinst ... Genre genre; virtual void printArtist() const; virtual ~Artist() {} }; #endifartist.cpp:
#include <iostream> #include "artist.h" void Artist::printArtist() const { ..... }