Fehlermeldung bitte hilfe !



  • Hallo !

    habe diese Fehlermeldung wenn ich compilen will

    1>.\KassaSystem.cpp(13) : error C3265: Ein verwalteter 'art_nr' kann nicht in einem nicht verwalteten 'kassa' deklariert werden
    1> Eine globale oder statische Variable oder ein Member eines systemeigenen Typs, der auf Objekte im gc-Heap verweist, kann nicht deklariert werden.

    struct kassa
    {
            String ^art_nr;
    	double laenge;
    	double breite;
    	double hoehe;
    	double volumen;
    };
    

    bitte helft mir !

    mfg



  • Willst du in C++ oder C++/CLI programmieren?



  • cli



  • Hallo

    bin auch bei dieser Aufgabe, aber wenn ich mich recht erinnere, dann wird der "String" mit ref oder value begonnen.

    Z. B. so:

    ref struct oder value struct
    

    Grß

    champman



  • danke - werds gleich versuchen.

    ich mache diese übung weil ich euer beispiel gut zur übung fand - versuch gerade ein loginsystem mit usercontrollpanel miteinbauen



  • // KistenVerwaltung.cpp: Hauptprojektdatei.
    
    #include "stdafx.h"
    
    using namespace System;
    using namespace System::IO;
    
    value struct kiste
    {
    	String ^art_nr;
    	double laenge;
    	double breite;
    	double hoehe;
    	double volumen;
    };
    
    kiste eingabe()
    {
    
    	kiste maße;
    	Console::Clear();
    
    	Console::WriteLine("Neue Kiste anlegen:\n");
    
    	Console::WriteLine("Länge [cm]: ");
    	maße.laenge = Convert::ToDouble(Console::ReadLine());
    
    	Console::WriteLine("Breite [cm]: ");
    	maße.breite = Convert::ToDouble(Console::ReadLine());
    
    	Console::WriteLine("Höhe [cm]: ");
    	maße.hoehe = Convert::ToDouble(Console::ReadLine());
    
    	maße.volumen = maße.hoehe * maße.breite * maße.laenge;
    
    	//////Artikelnummervergabe
    	//int generation;
    	//Random ^nummer = gcnew Random();
    	//generation = nummer->Next(100000, 10000000);
    	////maße.art_nr = "KST_" + generation;
    	//maße.art_nr = generation;
    	//////maße.art_nr = "KST_" + user + generation;
    	//////////////////////////////////////////////////////
    	Console::WriteLine("Artikelnummer: ");
    	maße.art_nr = (Console::WriteLine()).ToString();
    
    	Console::WriteLine("Artikelnummer: " + maße.art_nr);
    	Console::ReadLine();
    
    	StreamWriter ^safe = gcnew StreamWriter (maße.art_nr);
    	safe->WriteLine(maße.laenge+ " cm").ToString();
    	safe->WriteLine(maße.breite + " cm").ToString();
    	safe->WriteLine(maße.hoehe + " cm").ToString();
    	safe->WriteLine(maße.volumen + " cm³").ToString();
    	safe->WriteLine("").ToString();
    	safe->WriteLine("Artikelnummer: " + maße.art_nr).ToString();
    	safe->Close();
    
    	return maße;
    }
    
    kiste ausgabe()
    {
    	kiste daten;
    
    	String ^konsolenausgabe;
    	Console::Clear();
    
    	Console::WriteLine("Artikelnummer der Kiste eingeben: ");
    	daten.art_nr = (Console::WriteLine()).ToString();
    
    	StreamReader ^einlesen = gcnew StreamReader(daten.art_nr);
    	konsolenausgabe = Convert::ToString(einlesen->ReadToEnd());
    
    	einlesen->Close();
    	Console::Clear();
    
    	Console::WriteLine(konsolenausgabe);
    	Console::ReadLine();
    
    	return daten;
    }
    
    kiste aendern()
    {
    	kiste change;
    
    	String ^old;
    	Console::Clear();
    	Console::WriteLine("Artikelnummer eingeben: ");
    	change.art_nr = Convert::ToString(Console::ReadLine());
    
    	//System::IO::Directory::GetFiles(change.art_nr);
    	StreamReader ^aendern = gcnew StreamReader (Convert::ToString(change.art_nr));
    	old = aendern->ReadToEnd();
    	Console::WriteLine(old);
    	Console::ReadLine();
    
    	Console::WriteLine("neue Länge: ");
    	change.laenge = Convert::ToDouble(Console::ReadLine());
    	Console::WriteLine("neue Breite: ");
    	change.breite = Convert::ToDouble(Console::ReadLine());
    	Console::WriteLine("neue Höhe: ");
    	change.hoehe = Convert::ToDouble(Console::ReadLine());
    
    	change.volumen = change.hoehe * change.laenge * change.breite;
    
    	StreamWriter ^neu = gcnew StreamWriter (change.art_nr);
    	neu->WriteLine(change.laenge + " cm").ToString();
    	neu->WriteLine(change.breite + " cm").ToString();
    	neu->WriteLine(change.hoehe + " cm").ToString();
    	neu->WriteLine(change.volumen + " cm³").ToString();
    	neu->WriteLine("").ToString();
    	neu->WriteLine("Artikelnummer: " + change.art_nr).ToString();
    	neu->Close();
    	return change;
    }
    
    kiste loeschen()
    {
    	kiste del;
    
    	String ^yesno;
    	Console::Clear();
    	Console::WriteLine("Artikelnummer eingeben: ");
    	del.art_nr = Convert::ToString(Console::ReadLine());
    	//System::IO::Directory::GetFiles(del.art_nr);
    	Console::WriteLine("Soll " + del.art_nr + " wirklich gelöscht werden? [y] [n]");
    	yesno = Console::ReadLine();
    	if (yesno == "y")
    	{
    		System::IO::Directory::Delete(del.art_nr);
    		Console::WriteLine(del.art_nr + " wurde erfolgreich aus dem System entfernt!");
    		Console::ReadLine();
    	}
    	if (yesno == "n")
    	{
    		Console::WriteLine("Löschvorgang wurde beendet");
    		Console::ReadLine();
    
    	}
    	return del;
    }
    
    //kiste userverwaltung()
    //{
    //	kiste user;
    //
    //	String ^name;
    //	String ^inis;
    //	String ^pwd;
    //	String ^pwdcheck;
    //
    //	Console::Clear();
    //
    //	Console::WriteLine("Name des neuen Users: ");
    //	name = Convert::ToString(Console::ReadLine());
    //
    //	Console::WriteLine("Initialen von " + name);
    //	inis = Convert::ToString(Console::ReadLine());
    //
    //	Console::WriteLine("Password: ");
    //	pwd = Convert::ToString(Console::ReadLine());
    //
    //	Console::WriteLine("Password wiederholen: ");
    //	pwdcheck = Convert::ToString(Console::ReadLine());
    //
    //	if (pwd != pwdcheck)
    //	{
    //		Console::WriteLine("Passwörter stimmen nicht überein");
    //		Console::ReadLine();
    //		return 0;
    //	}
    //
    //	if (pwd == pwdcheck)
    //	{
    //
    //	
    //	StreamWriter ^newusername = gcnew StreamWriter(name);
    //	StreamWriter ^newuserinis = gcnew StreamWriter(inis);
    //	StreamWriter ^newuserpassword = gcnew StreamWriter(pwd);
    //	Console::WriteLine("User wurde erfolgreich erstellt");
    //	Console::ReadLine();
    //	}
    
    kiste end()
    {
    
    }
    
    int main(array<System::String ^> ^args)
    {
    
    //////////////////////////////////////////////////////////////
    //###HAUPTMENU###
    
    	int hauptmenu;
    
    	Console::WriteLine("Menü Unterpunnkt wählen: \n\n");
    
        Console::WriteLine("1. Eingabe\n");
        Console::WriteLine("2. Ausgabe\n");
        Console::WriteLine("3. Ändern\n");
        Console::WriteLine("4. Löschen\n");
        Console::WriteLine("5. User Verwaltung");
        Console::WriteLine("6. Programm Ende\n"); 
    
    	hauptmenu = Convert::ToInt32(Console::ReadLine());
    
    /////////////////////////////////////////////////////////////////
    
    	switch (hauptmenu)
    	{
    	case 1:
    		kiste eingabe();
    		break;
    
    	case 2:
    		kiste ausgabe();
    		break;
    
    	case 3:
    		kiste aendern();
    		break;
    
    	case 4:
    		kiste loeschen();
    		break;
    
    	case 5:
    		Console::WriteLine("IN ARBEIT");
    		Console::ReadLine();
    		break;
    
    	case 6:
    		kiste end();
    		break;
    
    	default:
    		Console::WriteLine("Funktionserror");
    		Console::ReadLine();
    		return 0;
    
    	}
    		Console::ReadKey();
    
    }
    

    1>c:\users\m.huettl\desktop\c++ mathis\test\project1\project1\project1\stuahujgbnkgn\stuahujgbnkgn.cpp(74) : fatal error C1001: Interner Compilerfehler.
    1>(Compilerdatei "f:\dd\vctools\compiler\utc\src\p2\wvm\mdmiscw.c", Zeile 1098)
    1> Vereinfachen oder ändern Sie das Programm im Umfeld der oben aufgeführten Positionen. Wählen
    1>Sie im Menü "Hilfe" von Visual C++ den Befehl "Technischer Support",

    ...................



  • Warum wollen Anfänger CLI proggen, obwohl Profis einen weiten Bogen um CLI machen?

    Ich erkenne keinen Zusammenhang von den Fehlermeldung und deinen gezeigten Code.

    Außerdem hast du viele Funktionsdeklarationen in deinem Code, der nicht macht, was du denkst.



  • hallo, ich bin ja bald an c# dran... aber ich hab jz ca 300seiten theorie gemacht - jetzt muss erstmal eine kleine pause bzw. abwechslung her.

    und um zu überprüfen, ob alles so stimmt wie ich will müsste ich das programm mal zum laufen bringen....



  • Warum wollen Anfänger CLI proggen, obwohl Profis einen weiten Bogen um CLI machen?

    Die "wollen" das, weil das die Schule von der die Aufgabe stammt "will".
    Ein übles Thema. 😞


Log in to reply