![]() |
DEUTSCHE VERSION |
|
| Links | | | Forums | | | Comments | | | Report news |
| Chat | | | Polls | | | Newsticker | | | Archive |
| amiga-news.de Forum > Programmierung > StormC 3.0 und Überladen von Operatoren | [ - Search - New posts - Register - Login - ] |
| -1- | [ - Post reply - ] |
|
2003-11-19, 21:00 h Mad_Dog Posts: 1944 User |
Kann es sein, daß StormC 3.0 (im C++ Modus) Probleme mit dem Überladen von Operatoren hat? Habe mir eine Vektor-Klasse (für 3D-Vektoren) gebastelt und hierzu die Operatoren "+" und "=" überladen, daß man z.B. auch zwei Vektoren v1 und v2 einfach mit v3 = v1 + v2 addieren kann. Leider meldet mir der Compiler, daß ein Typkonflikt vorliegt. In diesem fall scheint er nicht zu merken, daß ich die Operatoren "+" und "=" überladen habe... -- http://www.norman-interactive.com [ - Answer - Quote - Direct link - ] |
|
2003-11-19, 21:36 h mrbbc Posts: 101 User |
etwas genauer wär' nett... will dir ja nicht unterstellen, dass du's mit class ... { void +(); void =(); } probiert hast ;o) Was ist denn überhaupt die Basisklasse ? Wahrscheinlich stimmt einfach der Rückgabewert nicht überein (void statt int...); und da man den Rückgabewert einer Funktion beim Aufruf nicht zwangsläufig erkennt, ist es in C++ nicht erlaubt, gleichnamige Funktionen an zu legen, die sich nur in den Rückgabewerten unterscheiden. [ - Answer - Quote - Direct link - ] |
|
2003-11-19, 22:03 h Mad_Dog Posts: 1944 User |
Hier mal einige Codeschnipsel:code: usw. Hier das Überladen der Operatoren "+" , "+=" und "=": code: Das ganze mach ich dann noch für diverse andere Vektoroperationen wie z.B. Skalarprodukt usw. . Und hier das Testprogramm: code:-- http://www.norman-interactive.com [ - Answer - Quote - Direct link - ] |
|
2003-11-20, 11:16 h Solar Posts: 3680 User |
Schneller Test ergibt: g++ (v3.2) compiliert obigen Code (unverändert) mit --pedantic -Wall ohne Fehler oder Warnungen. [ - Answer - Quote - Direct link - ] |
|
2003-11-20, 13:58 h Mad_Dog Posts: 1944 User |
Zitat: Danke! Das bestätigt leider meine Befürchtung: Es liegt an StormC 3.0, der nicht merkt, daß ich die Operatoren überladen habe Wäre noch die Frage offen, ob's mit StormC 4.0 besser geht. Meine gcc-Installation habe ich leider beim Updateversuch verhunzt -- http://www.norman-interactive.com [ - Answer - Quote - Direct link - ] |
|
2003-11-20, 14:31 h Solar Posts: 3680 User |
Zitat: Der Compiler-Core von StormC 4 ist meines Wissens nach gcc > 2.95. Damit sollte es gehen, nur habe ich ihn nicht zur Hand um das zu testen. Sorry. [ - Answer - Quote - Direct link - ] |
|
2003-11-20, 23:52 h Holger Posts: 8116 User |
Vielleicht kommt StormC weniger durcheinander, wenn Du die Operatoren Referenzen zurückgeben läßt? Kann's nicht testen, habe StormC nicht mehr. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
|
2003-11-21, 08:43 h Mad_Dog Posts: 1944 User |
Hab jetzt mein gcc wieder zum Laufen bekommen, indem ich ne ältere Version (2.95.x) drüber installiert hab. Damit gab's dann keine Probleme mehr. Fazit: StormC 3.0 ist zwar für C zu gebrauchen, aber nicht für C++. Was auffällt: Die Executables werden mit gcc (bzw. g++) deutlich größer wie bei StormC. -- http://www.norman-interactive.com [ - Answer - Quote - Direct link - ] |
|
2003-11-22, 02:10 h Dietmar Posts: 166 User |
Zitat: Hast Du die Option zum Entfernen von Symbolen, Kommentaren usw. benutzt? Bei GoldED Studio AIX geht das mit "StripSymbols" auf der Dialog-Seite "Linker". Damit wird das Programm viel kleiner. Keine Ahnung wie die Option in der Kommandozeile heisst. Alternativ kann man das auch nach dem Übersetzen machen: --- Unstripped exes can get quite big, esp if you link with massive linklibs like libstdc++ (which also has alot of debuginfo in it), therefore you should always do the following: strip --strip-unneeded --remove-section .comment myexe -o myexe_stripped This will make a copy of myexe named myexe_stripped, but with all compiler and debuginfo removed, making it significantly smaller .. you could also just leave out "-o myexe_stripped" in which case it will remove it from myexe directly, however you shouldn't do that, as it will make it impossible to debug later... [ - Answer - Quote - Direct link - ] |
| -1- | [ - Post reply - ] |
| amiga-news.de Forum > Programmierung > StormC 3.0 und Überladen von Operatoren | [ - Search - New posts - Register - Login - ] |
|
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved. |