Hilfe bei einem Programm.
-
l'abra d'or schrieb:
Das ist kein C++, Das ist C++/CLI! Also falsches Unterforum.
Was ist denn das für ein Buch, das bei solchem Code behauptet C++ zu behandlen?Das Buch heisst:
jetzt lerne ich Visual C++ 2008
von Dirk Louis
-
pumuckl schrieb:
Bitte lies dir vor dem ersten Posten die wichtigen Threads durch, unter anderem den auf den meine Signatur verweist. du hast
- die [cpp]-Tags vergessen zu verwenden
- das falsche Forum rausgesucht (was du da hast ist C++/CLI, kein C++)
- nicht gesagt auf welche Zeilen sich die Fehlermeldungen beziehen.zu deinem Fehler: du hast eine Funktion innerhalb einer anderen Funktion definiert. Das geht zumindest in C++ nicht, in C++/CLI scheinbar auch nicht. (Das sagt dir eigentlich auch die Fehlermeldung).
Wenn du ordentlich eingerückt hast (kann man so nicht erkennen ohne [cpp]-Tags), dann siehst du auch wo...Die Fehler sind in der Zeile:
12 und 19
-
23RYTER23 schrieb:
Hallo Leute
Ich bin gerade C++ am lernen.
Ich habe einen jetzt ein Programm mit dem Buch zusammen gemacht,
das für das verwalten von Mitarbeitern ist.
Also für die Gehaltserhähung.
Jetzt bekomme ich aber 2 Fehler.error C2601: 'Mitarbeiter::DatenAusgeben': Lokale Funktionsdefinitionen sind unzulässig Mitarbeiter.cpp
error C2601: 'Mitarbeiter::GehaltErhoehen': Lokale Funktionsdefinitionen sind unzulässig Mitarbeiter.cppHier sind die Codes:
Mitarbeiter.h
#pragma once using namespace System; ref class Mitarbeiter { String ^name; String ^vorname; int gehalt; //Monatsgehalt public: Mitarbeiter(String ^name, String ^vorname, int gehalt); Mitarbeiter(void); void GehaltErhoehen(int erhoehung); void DatenAusgeben(); };
--------------------------------------------------------------------------------
Mitarbeiter.cpp
#include "StdAfx.h" #include "Mitarbeiter.h" Mitarbeiter::Mitarbeiter(String ^name, String ^vorname, int gehalt) { this->name = name; this->vorname = vorname; this->gehalt = gehalt; void Mitarbeiter::DatenAusgeben() { Console::WriteLine(); Console::WriteLine("Name : " + name); Console::WriteLine("Vorname : " + vorname); Console::WriteLine("Gehalt : " + gehalt + " Euro"); void Mitarbeiter::GehaltErhoehen(int erhoehung) { this->gehalt += erhoehung; } } }
--------------------------------------------------------------------------------
Mitarbeiterverwaltung.cpp
// Mitarbeiterverwaltung.cpp: Hauptprojektdatei. #include "stdafx.h" #include "Mitarbeiter.h" using namespace System; int main(array<System::String ^> ^args) { Mitarbeiter ^billy = gcnew Mitarbeiter("Gates", "Bill", 3000); Mitarbeiter ^stevie = gcnew Mitarbeiter("Jobs", "Steve", 3500); // Daten ausgeben billy->DatenAusgeben(); stevie->DatenAusgeben(); // Gehalt von billy erhöhen billy->GehaltErhoehen(500); // Kontrolle billy->DatenAusgeben(); stevie->DatenAusgeben(); return 0; }
Vielen Dank schon im voraus.
mit freundlichen Grüssen
Michael
So... wo ist jetzt der Fehler?
-
So... wo ist jetzt der Fehler?[/quote]
Das weis ich eben selbst auchnicht.
Das hier sind eifnach die Fehlermeldungen:
Fehler 1 error C2601: 'Mitarbeiter::DatenAusgeben': Lokale Funktionsdefinitionen sind unzulässig Zeile 12
Fehler 2 error C2601: 'Mitarbeiter::GehaltErhoehen': Lokale Funktionsdefinitionen sind unzulässig Zeile 19
Kannst du mir da weiterhelfen?
-
Hi...
Fehler gefunden!
Du darfst keine Funktion in einer Funktion definieren.
#include "StdAfx.h" #include "Mitarbeiter.h" Mitarbeiter::Mitarbeiter(String ^name, String ^vorname, int gehalt) { this->name = name; this->vorname = vorname; this->gehalt = gehalt; void Mitarbeiter::GehaltErhoehen(int erhoehung) { this->gehalt += erhoehung; } void Mitarbeiter::DatenAusgeben() { Console::WriteLine(); Console::WriteLine("Name : " + name); Console::WriteLine("Vorname : " + vorname); Console::WriteLine("Gehalt : " + gehalt + " Euro"); Mitarbeiter::GehaltErhoehen(int erhoehung); } }
So müsste es funzen, hab es selber aber nicht nachgeprüft (aus Zeitdruck).
Edit: Ach ja, wenn du spezifische Fehler gemeldet bekommst, kannst du sie auch einfach in der msdn-library suchen, man findet dort eigentlich immer was nützliches
http://msdn.microsoft.com/de-de/library/sba3hty9(VS.80).aspx
-
Danke für die Antwort.
Leider geht es immer noch nicht.
Wen ich jetzt den Code nehme:
#include "StdAfx.h"
#include "Mitarbeiter.h"Mitarbeiter::Mitarbeiter(String ^name, String ^vorname, int gehalt)
{
this->name = name;
this->vorname = vorname;
this->gehalt = gehalt;void Mitarbeiter::GehaltErhoehen(int erhoehung)
{
this->gehalt += erhoehung;
}void Mitarbeiter::DatenAusgeben()
{
Console::WriteLine();
Console::WriteLine("Name : " + name);
Console::WriteLine("Vorname : " + vorname);
Console::WriteLine("Gehalt : " + gehalt + " Euro");Mitarbeiter::GehaltErhoehen(int erhoehung);
}
}--------------------------------------------------------------------------------
Kommen diese 5 Fehler:
Fehler 1 error C2601: 'Mitarbeiter::GehaltErhoehen': Lokale Funktionsdefinitionen sind unzulässig Zeile 12
Fehler 2 error C2601: 'Mitarbeiter::DatenAusgeben': Lokale Funktionsdefinitionen sind unzulässig Zeile 17
Fehler 3 error C2144: Syntaxfehler: 'int' sollte auf ')' folgen Zeile 23
Fehler 4 error C2660: 'Mitarbeiter::GehaltErhoehen': Funktion akzeptiert keine 0 Argumente Zeile 23
Fehler 5 error C2059: Syntaxfehler: ')' Zeile 23
-
@Walnut_Burl: Funzt nicht...
Zeile 14 in der Mitarbeiter.h
Fehler 1 error LNK2020: Nicht aufgelöstes Token (06000001) Mitarbeiter::.ctor. Mitarbeiter.obj
@23RYTER23: Hier ist einiges schief gegangen bei Deinem abgetippsel...
Mitarbeiterverwaltung.cpp War zwar Okay, aber nur der Ordnung halber...
#pragma once #include "stdafx.h" #include "Mitarbeiter.h" using namespace System; int main(array<System::String ^> ^args) { Mitarbeiter ^billy = gcnew Mitarbeiter("Gates", "Bill", 3000); Mitarbeiter ^stevie = gcnew Mitarbeiter("Jobs", "Steve", 3500); // Daten ausgeben billy->DatenAusgeben(); stevie->DatenAusgeben(); // Gehalt von billy erhöhen billy->GehaltErhoehen(500); // Kontrolle billy->DatenAusgeben(); stevie->DatenAusgeben(); return 0; }
Mitarbeiter.h
#pragma once using namespace System; ref class Mitarbeiter { String ^name; String ^vorname; int gehalt; //Monatsgehalt public: Mitarbeiter(String ^name, String ^vorname, int gehalt); //Mitarbeiter(void); void GehaltErhoehen(int erhoehung); void DatenAusgeben(); };
Mitarbeiter.cpp
#include "StdAfx.h" #include "Mitarbeiter.h" Mitarbeiter::Mitarbeiter(String ^name, String ^vorname, int gehalt) { this->name = name; this->vorname = vorname; this->gehalt = gehalt; } void Mitarbeiter::DatenAusgeben() { Console::WriteLine(); Console::WriteLine("Name : " + name); Console::WriteLine("Vorname : " + vorname); Console::WriteLine("Gehalt : " + gehalt + " Euro"); } void Mitarbeiter::GehaltErhoehen(int erhoehung) { this->gehalt += erhoehung; }
Gruß,
Doug_HH
-
Danke für die Hilfe.
Das Program geht jetzt.Ich sollte glaube mehr Ordnung haben beim Programmieren. ^^
mit freundlichen Grüssen
Michael
-
Jo stimmt meins hat einige Bugs
Nja deine Version funktioniert ja jetzt, aber ich war ziemlich nah dran nicht wahr
-
Ja, und vor allem war Dein Code ungetestet...