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.cpp

    Hier 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... 😉


Anmelden zum Antworten