Beeper
-
Hallo,
ich habe mich neu angemeldet. Ich hoffe, dass ich mich hier zurecht finde.
Gleich mal meine Frage:
http://i56.tinypic.com/w7y52d.png
Das hier habe ich programmiert:
#include <iostream> #include "windows.h" using namespace std; class Beeper { private: int frequenz; int dauer; public: Beeper() { frequenz = 0; dauer = 0; } Beeper(int frequenz, int dauer) {this->frequenz = frequenz; this->dauer = dauer; } void beep(); } int main () { Beeper * beeper; beeper = new Beeper(500,1000); beeper->beep(); return 0; }was klappt denn bei mir nicht??
-
Erst mal willkommen im Forum!
fenerli43 schrieb:
was klappt denn bei mir nicht??

Na das müsstest du uns eigentlich sagen, und wir sagen dir dann, warum es nicht klappt.
EDIT: Eine Klassendeklaration muss mit Semikolon abgeschlossen werden! Pack einfach ein Semikolon hinter die schließende, geschweifte Klammer der Klassendeklaration, und du bist schon mal die Compiler-Fehler los.
-
fenerli43 schrieb:
]was klappt denn bei mir nicht??
Das solltest du uns schon sagen...
Compiliert er nicht oder konntest du das Programm starten, aber es kommt kein Ton?
-
_matze schrieb:
Na das müsstest du uns eigentlich sagen, und wir sagen dir dann, warum es nicht klappt.
ich kriege kein beeeeeep ton raus

-
HowToAskQuestions schrieb:
fenerli43 schrieb:
]was klappt denn bei mir nicht??
Das solltest du uns schon sagen...
Compiliert er nicht oder konntest du das Programm starten, aber es kommt kein Ton?
das sagt mir mein compiler:
1>------ Erstellen gestartet: Projekt: Freies Üben, Konfiguration: Debug Win32 ------ 1>Der Buildvorgang wurde am 20.09.2010 15:59:55 gestartet. 1>InitializeBuildStatus: 1> Aktualisieren des Timestamps von "Debug\Freies Üben.unsuccessfulbuild". 1>ClCompile: 1> Beeper.cpp 1>c:\users\xxx\documents\visual studio 2010\projects\freies üben\freies üben\beeper.cpp(16): error C2628: 'Beeper' gefolgt von 'int' unzulässig (Semikolon ';' vergessen?) 1>c:\users\xxx\documents\visual studio 2010\projects\freies üben\freies üben\beeper.cpp(17): error C3874: Der Rückgabetyp von "main" sollte "int" und nicht "Beeper" sein 1>c:\users\xxx\documents\visual studio 2010\projects\freies üben\freies üben\beeper.cpp(21): error C2664: 'Beeper::Beeper(const Beeper &)': Konvertierung des Parameters 1 von 'int' in 'const Beeper &' nicht möglich 1> Ursache: Konvertierung von 'int' in 'const Beeper' nicht möglich 1> Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig 1> 1>Fehler beim Erstellen 1> 1>Verstrichene Zeit 00:00:01.42 ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
-
Du rufst ja auch nicht die Windows-Methode beep() auf. Wenn Du deine eigene Klassenmethode beep() benutzt, gibt es nur einen Fall, für den Du auch den gewünschten Ton rausbekommst.
Ferne schließt man Klassendefinitionen mit ; ab

Übrigens solltest Du den Professor erschießen, denn der kann kein C++.
-
Lass mich in die Glaskugel schauen: Undefined Reference? Bitte poste die Fehlermeldung.
Wo ist die Implementierung von Beeper::beep()?
Davon mal abgesehen:
- Kennst du Initalisierungslisten?
- Kennst du Default-Argumente (es reicht ein Ctor
)?Geschmackssache: Ich würde den privat-Teil unter den public-Teil setzen, schliesslich sollte der nicht interessieren.
Und abschliessend: Den Beeper extra dynamisch allokieren, hmmm, naja, hoffentlich schimpft sich der Kurs nicht C++...
Nicht falsch verstehen

EDIT: zu spät
-
So, die Windows-eigene Funktion Beep wird von dir nicht verwendet. Du kannst also logischerweise auch kein Beeeeep hören. Du deklarierst hier in deiner Klasse eine Methode beep, die aber nirgendwo implementiert ist. Die Implementation würde ja angeben, was in der Methode geschehen soll, sprich welche Anweisungen ausgeführt werden sollen. Diese fehlt aber bei dir, so dass selbst nach Eliminieren des schon von mir genannten Compiler-Fehlers dein Programm nicht erstellt werden kann. Dann meckert nämlich der Linker (zu Recht), dass er die Implementation der Funktion beep nicht findet.
Alles, was du also tun musst, ist die Methode beep zu definieren und mit Anweisungen zu füllen. Und da sollte dann am besten die Windows-Funktion Beep vorkommen...