Wegginho Geschrieben 18. Februar 2009 Geschrieben 18. Februar 2009 Hallo Leute, bin relativ neu hier im Forum, deshalb erstmal ein wenig zu mir. Ich Programmiere CATIA V5 CAA C++, was den wenigsten Leuten ein Begriff ist, für ein mittelständisches Unternehmen im Raum NRW (derzeit noch in der Ausbildung). Ich beschäftige mich seit knapp knapp 3 Monaten mit dem Thema C++ und nun seit eineinhalb Monaten ca. mit dem Thema CAA ( Dassault Systemes:Product Lifecycle Management PLM and 3D Simulation Software Solutions ). Bin noch relativ grün hinter den Ohren, da ich aber schon relativ viel Vorwissen im Bereich Programmierung besitze. Kommen wir nun zu meiner Frage: Ist es möglich, dynamisch Variablentypen zu initialisieren? Gehen wir einfach mal davon aus, dass ich eine einfache Eingabe habe: cout << "Geben Sie eine Zahl ein :"; cin >> Zahl; Gehen wir davon aus, der Benutzer gibt 2000 ein, möchte ich eine Zuweisung eines Integers vollziehen. Sollte der Benutzer aber z.B. 70000, dann lieber ein Double. Bei 7.5 einen float etc. Gibt es da eine gute Methode für ? Hab schon relativ viel im Internet gesucht, was das Thema angeht, aber bisher wenig gefunden. Würde mich über Antworten freuen, mfg Zitieren
Guybrush Threepwood Geschrieben 18. Februar 2009 Geschrieben 18. Februar 2009 Nein, zum Glück geht das nicht und macht normalerweise auch keinen Sinn. Was genau möchtest du denn machen? PS: Du könntest das höchstens als String einlesen und dann je nachdem einer anderen Variable zuweisen (konvertieren) Zitieren
Wegginho Geschrieben 18. Februar 2009 Autor Geschrieben 18. Februar 2009 Naja, aus meiner Sicht ist das ganze schon sehr sinnvoll. Wenn es nötig ist, kann ich meine Situation zu späterer Stelle nochmal genauer definieren. An dieser Stelle soll erstmal genügen, dass ich eine Eingabe empfangen möchte und diese direkt an die passende Variable übergeben will. Das ganze mindert Speicherverschwendung, da ich Anwendungen nicht nur für "ultra"-Systeme schreibe, ist es meiner Meinung nach nötig, immer den geringsten Aufwand an Speicher und Variablen zu haben, wie möglich. Dynamische Speicherzuweisung existiert. Mir hat ein externer Mitarbeiter mal kurz was darüber erzählt, kurz bevor er zurück in die Schweiz gereist ist. Ich hatte keine Zeit ihn nach Codebeispielen zu fragen, war aber sehr fasziniert von der Idee... :beagolisc MfG Zitieren
Guybrush Threepwood Geschrieben 18. Februar 2009 Geschrieben 18. Februar 2009 Natürlich kannst du dir dynmisch Speicher reservieren, das hat aber nichts mit deiner Ursprungsfrage zu tun. C++ ist zum Glück eine typisierte Sprache und wenn du irgendwo etwas einliest dann weißt du was du an der Stelle erwartest. Wenn du unbedingt mit einer nichttypisierten Sprache arbeiten willst dann nimm Perl oder sowas. Zitieren
Wegginho Geschrieben 18. Februar 2009 Autor Geschrieben 18. Februar 2009 Vielleicht solltest du nicht jedes Wort meines Textes auf die Goldwage legen und krampfhaft versuchen eine Lösung für ein Problem zu finden, auf das du, wie es scheint, keine Antwort hast. Zitieren
Guybrush Threepwood Geschrieben 18. Februar 2009 Geschrieben 18. Februar 2009 Doch ich kann bzw. hab dir gesagt das das so nicht möglich ist und wenn du nicht beschreiben willst was du genau machen möchtest dann kann man dir auch keine Alternativen nennen. Wenn du das nicht akzeptieren willst/kannst oder sonstige Problem hast kann ich dir auch nicht helfen Zitieren
Wegginho Geschrieben 18. Februar 2009 Autor Geschrieben 18. Februar 2009 Gehen wir einfach mal davon aus, dass ich eine einfache Eingabe habe: cout << "Geben Sie eine Zahl ein :"; cin >> Zahl; Gehen wir davon aus, der Benutzer gibt 2000 ein, möchte ich eine Zuweisung eines Integers vollziehen. Sollte der Benutzer aber z.B. 70000, dann lieber ein Double. Bei 7.5 einen float etc. /edit: Void-zeiger hab ich schonmal versucht, aber der hat bei mir immer Fehler ausgespuckt :-( Zitieren
Guybrush Threepwood Geschrieben 18. Februar 2009 Geschrieben 18. Februar 2009 Das ist das was oben schon stand: PS: Du könntest das höchstens als String einlesen und dann je nachdem einer anderen Variable zuweisen (konvertieren) Die Frage dabei ist warum du das so machen willst, denn du willst ja mit der Eingabe auch irgendwie weiterarbeiten. Zitieren
TDM Geschrieben 18. Februar 2009 Geschrieben 18. Februar 2009 Das mit dem Void-Zeiger war ein Scherz... Auf welchen Systemen soll das Programm denn laufen, wenn jedes einzelne Bit so wichtig ist? Außerdem hat man bei 3D-Anwendungen (hab ich jetzt mal so rausgelesen) andere Optimierungsmöglichkeiten, als sich über Datentypen für Zahlen gedanken zu machen. Nimm einfach immer double, da passt genug rein, Komma kannst du anzeigen usw. Der Code-Overhead für die Erstellung dynamischer Variablen bzw. die Abprüfung nach dem Typ wiegt die Vorteile von paar Bits/Bytes so und so auf. Wenns wirklich so wichtig ist, dann schreib es in reinem C oder ASM. Zitieren
Klotzkopp Geschrieben 18. Februar 2009 Geschrieben 18. Februar 2009 Ist es möglich, dynamisch Variablentypen zu initialisieren? Einfache Antwort: Nein. C++ ist statisch typisiert. Man kann so etwas natürlich nachbilden. Du könntest dir beispielsweise mal boost::any ansehen. Ich weiß allerdings nicht, ob man boost auf deiner Plattform ans Laufen bringen kann. Außerdem vermute ich, dass das deinem Ziel der Minimierung des Speicherverbrauchs eher entgegenläuft. Solche "Komfort"-Features muss man sich immer durch Performance erkaufen, sei es durch Laufzeit- oder durch Speicheroverhead. Zitieren
Wegginho Geschrieben 19. Februar 2009 Autor Geschrieben 19. Februar 2009 Damit klappts, danke danke danke !!! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.