Implementierung einer Klasse - Probleme
-
Guten Tag zusammen,
ich bin gerade dabei in C++ eine Klasse zu deklarieren und Sie zu implementieren. Dabei treten jedoch Fehler auf, mit denen ich leider nicht ganz soviel anfangen kann. Zumind. finde ich Sie nicht.
Ich habe 3 Dateien. main.cpp, class_suche.h und class_suche.cpp
Ich poste euch nun mal die einzelnen Dateien:
main.cpp#include <cstdlib> #include <iostream> #include "class_suche.h" using namespace std; int main(int argc, char *argv[]) { std::cout << "Einfacher Test der Klasse Datum\n"; system("PAUSE"); return 1; }
class_suche.h
// Header Datei zur Klasse "Suche" #ifndef CLASS_SUCHE_H #define CLASS_SUCHE_H class Suche{ public: static void main(String[] args); bool search(int[] field, int key); }; #endif
class_suche.cpp
// CPP Datei zur Klasse "Suche" #include <string.h> #include "class_suche.h" static void Suche::main(String[] args){ std::cout << "Hallo Welt!" << std::endl; } bool Suche::search(int[] field, int key){ std::cout << "Hallo Welt - SUCHE!" << std::endl; }
Ich versuche die main.cpp mit dem Compiler von DevC++ zu kompilieren.
Folgende Fehler bekomme ich:3 E:\Fibonacci-Suche\main.cpp In file included from main.cpp 8 E:\Fibonacci-Suche\class_suche.h variable or field `main' declared void 8 E:\Fibonacci-Suche\class_suche.h expected `;' before '(' token 9 E:\Fibonacci-Suche\class_suche.h expected `,' or `...' before "field" E:\Fibonacci-Suche\Makefile.win [Build Error] [main.o] Error 1
Gehen wir die Fehler mal einzelnd durch:
Der 1. Fehler besagt, dass in dem inkludierten File "class_suche.h" ein Fehler ist.
Der 2. Fehler zeigt auf folgende Zeile in der class_suche.hstatic void main(String[] args);
. Meine Vermutung ist, dass er mit dem "static" und mit dem Dateityp "String" ein Problem hat. Nur ich kann leider nicht herausfinden welches.
Der 3. Fehler zeigt auf die gleiche Zeile. Dies sieht mir nach einem Syntax-Fehler aus, obwohl ich leider keinen entdecken kann.
Der 4. Fehler zeigt auf die darauffolgende Zeile und besagt den gleichen Fehler. Also, siehe Fehler 3.
Der letzte Fehler besagt, meines Wissens, nur dass DevC++ das Programm nicht kompilieren konnte.So und nun zu der großen Frage: Was mache ich falsch?
-
wieso haust du ne main methode in die klasse? die hast doch schon in der main cpp
-
Weil es die Aufgabe, welche ich versuche zu lösen, so vorschreibt, dass die Klasse Suche eine Methode main hat.
Und eigentlich müsste dies egal sein, da am Anfang die Funktion main aufgeführt wird. Die Methode main befindet sich aber in der Klasse Suche. Somit kann es mit dem Namen nichts zu tun haben.
-
Was für eine Sprache ist das, bitte? Woher hast Du diesen Unsinn?
1. Es gibt keinen Datentyp "String" in C++. Der String von C++ heißt std::string.
2. Es gibt keine dynamischen Arrays in C++, und selbst wenn, sieht die Array-Syntax anders aus.
3. Statische Memberfunktionen dürfen ausserhalb der Klasse nicht nochmal static definiert werden, denn dort hat das static eine andere Bedeutung, die sich mit der Klassenzugehörigkeit beißt.Aber bevor wir lösen, solltest Du die Sprachfrage klären.
-
AndyGast schrieb:
Meine Vermutung ist, dass er mit dem "static" und mit dem Dateityp "String" ein Problem hat. Nur ich kann leider nicht herausfinden welches.
Vermutlich versteht dein C++-Compiler einfach kein Java.
-
static void main(String[] args);
Das ist eindeutig die Signatur einer Java-main-Methode. Kann es sein, dass du in der falschen Sprache programmierst?
Zumal es (meines Wissens) die Klasse String in der C++-Standardbibliothek nicht gibt ( ==> std::string). String ist auch hier wieder das Java-Pendant.
Grüße... Heiko
-
Für Java spricht auch die Tatsache, dass man hier krampfhaft versucht, einen Funktion in eine Klasse umzudefinieren.
Ein Verb wird auch durch Substantivierung inhaltlich nicht zur Instanz.
Gruß,
Simon2.
-
Ein kleine Sache noch. Wenn du:
using namespace std;
machst, reicht:
cout << endl; // ohne namspace std::cout << endl;