Dev-Cpp kann erkennt mein main nicht mehr ?!?
-
Ich habe versucht das 8-Damenproblem zu programmieren.
Dazu habe ich im main.cpp nur#include <stdlib.h> #include <stdio.h> #include "damenproblem.h" int main(){ printf("%d",damenproblem::solve()); system("PAUSE"); }stehen.
Im damenproblem.h steht#ifndef DAMENPROBLEM_H #define DAMENPROBLEM_H class damenproblem{ public: int solve(); private: int feld[64]; int spalten[8]; int zeilen[8]; int number; void init(); void setzedame(int); } #endif,
im damenproblem.cpp dann das zu den Funktionen damenproblem::init und damenproblem::setzedame.
Die Fehlermeldung lautet:
new types may not be defined in a returned typeWeiß jemand von euch, was ich falsch gemacht habe???
Wäre nett, wenn ihr mir helfen könntet!!!LG und Danke im voraus!!!
Ben
-
Semikolon am Ende der Klasse vergessen.
-
Aber auch in der main hast du ein Problem..
Auch wenn ich nicht ganz weiss, warum damenproblem eine Klasse sein sollte, musst du zuerst ein Objekt erstellen, bevor du darauf eine Funktion aufrufen kannst. (Ausser du machst alles static, dann geht dast).
Wenn es aber die einzige Aufgabe ist das Problem zu lösen, dann würde ich da nicht einfach aus Zwang eine Klasse draus machen..
Mach Klassen lieber dort, wo sie Sinn machen.
-
Super, Danke...das Semikolon wars natürlich!
Kleiner Fehler - Große Wirkung!!!
(Hab halt noch viel zu lernen beim programmieren!!!)
LG Ben
-
drakon schrieb:
Aber auch in der main hast du ein Problem..
Auch wenn ich nicht ganz weiss, warum damenproblem eine Klasse sein sollte, musst du zuerst ein Objekt erstellen, bevor du darauf eine Funktion aufrufen kannst. (Ausser du machst alles static, dann geht dast).
Wenn es aber die einzige Aufgabe ist das Problem zu lösen, dann würde ich da nicht einfach aus Zwang eine Klasse draus machen..
Mach Klassen lieber dort, wo sie Sinn machen.
Ja, dass hab ich auch gemerkt...werde mich mal darum bemühen das noch ein wenig sauberer zu programmieren!
Bin aber halt noch nicht so der Experte...
-
Das nächste "Problem" ist, dass du veraltete Header benutzt:
<stdlib.h> und <stdio.h> sind seit 10 Jahren vom Standard als veraltet gekennzeichnet. Außerdem enthalten sie C-Funktionen, für die es häufig einen C++-Ersatz gibt. Die entsprechenden Header für die C-Funktionen heißen <cstdlib> und <cstdio>, die einzige Änderung ist dass alle Funktionen im namespace std liegen.
Der C++-Ersatz für printf() ist der std::ostream std::cout aus dem Header <iostream>. Wenn möglich solltest du den einem einfachen printf() vorziehen, sowohl aus Gründen der Konsistenz mit anderen C++-Features als auch auf grund der Typsicherheit (printf() ist NICHT typsicher).
-
Wie groß ist denn der Unterschied mit den Headern wirklich für den einfachen, vor allem mathematische Probleme betrachtenden, Programmierer?
-
Header von <x.h> in <cx> umbennen, in deinen Headern vor allen Standard-Dingen ein std:: davor und in den Source-Files einfach ein using namespace std; hinter den Include-Block.
Das wäre der erste Schritt.
Ansonsten ist ein cout << wasauchimmer << endl; angenehmer als ein printf("%s", str);
Aber das lernt man noch...
-
Die Frage ist aber, ist das wirklich effektiver, oder nur von nutzen wenn ich so richtig viel ausführlich programmiere?
-
Wie es immer mit deprecated Sachen ist, kann es sein das bei der nächsten Compilerversion dein Programm nicht mehr läuft (wenn du alte Header verwendest).
Ansonsten empfiehlt es sich die Methoden von C++ zu nutzen, da sie sicherer und komfortabler sind als die alten C-Schinken. Zumindest nach der kurzen Eingewöhnungszeit um die man nicht herumkommt.
-
Dann werde ich mich mal da einlesen und das ändern.
Außerdem: Habe jetzt bei dem Programm die Klasse weggenommen und das nur als Prozess nicht objektorientiert gemacht!
Dafür funktioniert es jetzt auch...Danke für eure Hilfe!!!