Hello Phil,.
 
I think I can help you with the second part of your query.
 
The error is actually quite a good one but the reason why the warning is
produced needs a little background information on how C++ implements OOP.
The error is generated because your class has members that are pointers...
distance, depotdist and name. Obviously these are assigned or allocated
space somewhere in your class methods. The problem is, however, that you do
not have a copy constructor or assignment operator method (these are the two
the warning complains about). So, with the absence of these, when you
construct a copy, or assign, an object of class Gene, a binary copy of the
object is made in memory. The danger here is that the pointer values will be
copied to the new object and you will end up with two objects which
internally have pointers directed to the same space. i.e. change one and the
other will change too. This is generally, but not always, undesirable and
could cause some nasty bugs which are difficult to track down.
 
The solution is to always have a copy constructor and assignment operation
function is your classes. It's generally good OOP practice.
 
As for a dummy's guide to the errors, I'm afraid it's just a case of
experience. If it was easy, C++ development wouldn't be regarded as a value
skill!
 
Regards,
Warren Vick
Europa Technologies Ltd.
 <http://www.europa-tech.com> http://www.europa-tech.com

-----Original Message-----
From: Phil Waight [mailto:[EMAIL PROTECTED] 
Sent: 19 November 2004 04:45
To: David Langley
Cc: [EMAIL PROTECTED]
Subject: MI-L Re: RE:MI-L Off-topic: c++ porting problem- gnu c++ to MS .net
c++ 


Dave,
 
That change made the code more readable and pointed me in the right
direction. I tried  the -pedantic switch in gcc. 
 
"chromo.cc:15: error: ISO C++ forbids array dimensions with parenthesized
type in new"
 
So: 
myChromoPool = new pChromo [popSize];
now works in VS.
 
Thanks for the help. I have attached the header file for the other problem
if you're able to look at that.
 
Phil.

----- Original Message ----- 
From: David Langley <mailto:[EMAIL PROTECTED]>  
To: [EMAIL PROTECTED] 
Cc: [EMAIL PROTECTED] 
Sent: Friday, November 19, 2004 9:31 AM
Subject: RE:MI-L Off-topic: c++ porting problem- gnu c++ to MS .net c++ 


Phill,

try using a typedef (a synonym for another type) declaration as a pointer to

the Chromo vector

i.e

typedef Chromo* pChromo ;

then change your code to
pChromo *myChromoPool ; // Chromosome vector
myChromoPool = new (pChromo)[popSize]  ;

Not sure about the second problem as I would have to see the header file.

Best Regards,

Dave

David P. Langley
Director of Programming Services

Mapping Solutions, LLC
4660 S. Hagadorn Rd.
Suite 120
East Lansing, MI 48823
USA

Voice: (+1) 517-332-7735
Cell:  (+1) 517-402-3238
Fax:   (+1) 517-332-1329

Email: [EMAIL PROTECTED]
SMS:  5174023238 (@tmomail.net)

Visit our website: www.mappingsolutions.com

*** Need inexpensive GDT and NavTech street-level data for North America and

Europe? Check out Map-In-A-Box at http://www.mapinabox.com ***
*** Map-In-A-Box Year-End Blowout!... Map-In-A-Box is on Sale Until December

31, 2004.. Check out Map-In-A-Box at http://www.mapinabox.com *** 



Reply via email to