From: SourceForge.net <no...@so...> - 2007-05-11 14:28:04
|
Bugs item #1712096, was opened at 2007-05-03 15:55 Message generated for change (Comment added) made by keithmarshall You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=1712096&group_id=2435 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None >Status: Closed >Resolution: Wont Fix Priority: 5 Private: No Submitted By: AntonioSF (antoniosf) Assigned to: Nobody/Anonymous (nobody) Summary: Reference badly assigned Initial Comment: [Two files attached] When I compile and execute the first attached file, it writes: John drives a: "bus" Otto drives a: "bus" Which is wrong. When I compile and execute the second attached file, it writes: John drives a: "car" Otto drives a: "bus" Which is right. What is the difference between the first and the second file? just a "&". There is a bug in Mingw, in the version: c:\>g++ --version g++ (GCC) 3.4.2 (mingw-special) However, if I try it in Linux with g++ (GCC) 4.1.1 it works flawlessly, both files showing the same result when compiled and executed. Please contact with me to do whatever tryings you need ---------------------------------------------------------------------- >Comment By: Keith Marshall (keithmarshall) Date: 2007-05-11 14:28 Message: Logged In: YES user_id=823908 Originator: NO This isn't a MinGW issue; it's a GCC issue. If you believe that GCC should reject your invalid code under the circumstances you describe, and you can confirm that the current 4.x series GCC compilers don't already do this, (and your experience on Linux suggests that they don't, at least in the 4.1.x series), then you should raise a bug report directly on GCC Bugzilla. Before you do that, however, have you checked to see if any existing warning option will catch such coding errors? This is not something that we will address, as a solely MinGW related issue. I don't see any point in keeping this bug open, since any fix must come from upstream. ---------------------------------------------------------------------- Comment By: AntonioSF (antoniosf) Date: 2007-05-04 09:14 Message: Logged In: YES user_id=1679714 Originator: YES About the first file, the freely available Borland C++ 5.5.1 wisely stops people from compiling the error: Error E2359 main.cpp 23: Reference member 'Driver::what_drives' initialized with a non-reference parameter in function Driver::Driver(Automobile) Now, if Mingw developers want to close this bug and keep this code compiling and these errors happening, they can. ---------------------------------------------------------------------- Comment By: Luke Dunstan (infidel) Date: 2007-05-03 16:13 Message: Logged In: YES user_id=30442 Originator: NO Your code is incorrect. If it works on Linux then that is purely by accident. When you declare the argument without '&' then it will make a temporary copy of the Automobile object on the stack, but it is wrong to store a reference to a temporary object because it will be invalid after the constructor returns. In this case the memory was apparently reused but in many cases it would just crash. ---------------------------------------------------------------------- Comment By: AntonioSF (antoniosf) Date: 2007-05-03 15:56 Message: Logged In: YES user_id=1679714 Originator: YES File Added: main.cpp ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=1712096&group_id=2435 |