c++ - Constructor bug or me?
- Paul (11/11) Sep 15 2005 Don't know if this is a compiler bug or me doing something undefined. Ha...
- Pablo Aguilar (20/35) Sep 15 2005 You can use them, just make sure that they're listed in the order you wa...
- Paul (3/45) Sep 20 2005 Yep. That explains it. Thanks.
Don't know if this is a compiler bug or me doing something undefined. Had a string class with a size member and a minimum allocation member. Default constructor originally like this: string() : min(64),sz(min),ln(0) { p=new char[sz+1]; *p=0; } It worked fine until a certain amount (quite a lot) of memory had been consumed by the program then started crashing as 'p' was null after the new statement. Changed to: string() : min(64),sz(64),ln(0) { p=new char[sz+1]; *p=0; } and worked fine. Can you not use previous member constructor values in the constructor list then? Just curious really. Paul
Sep 15 2005
You can use them, just make sure that they're listed in the order you want them initialized: class string { string() : min(64) , sz(min) , ln(0) { //... } private: int min; // These must appear in this order int sz; // if sz comes first, min has an undefined value int ln; // when used in sz's initialization }; HTH Pablo "Paul" <Paul_member pathlink.com> wrote in message news:dgbund$176c$1 digitaldaemon.com...Don't know if this is a compiler bug or me doing something undefined. Had a string class with a size member and a minimum allocation member. Default constructor originally like this: string() : min(64),sz(min),ln(0) { p=new char[sz+1]; *p=0; } It worked fine until a certain amount (quite a lot) of memory had been consumed by the program then started crashing as 'p' was null after the new statement. Changed to: string() : min(64),sz(64),ln(0) { p=new char[sz+1]; *p=0; } and worked fine. Can you not use previous member constructor values in the constructor list then? Just curious really. Paul
Sep 15 2005
Yep. That explains it. Thanks. Paul In article <dgcbp8$1mll$1 digitaldaemon.com>, Pablo Aguilar says...You can use them, just make sure that they're listed in the order you want them initialized: class string { string() : min(64) , sz(min) , ln(0) { //... } private: int min; // These must appear in this order int sz; // if sz comes first, min has an undefined value int ln; // when used in sz's initialization }; HTH Pablo "Paul" <Paul_member pathlink.com> wrote in message news:dgbund$176c$1 digitaldaemon.com...Don't know if this is a compiler bug or me doing something undefined. Had a string class with a size member and a minimum allocation member. Default constructor originally like this: string() : min(64),sz(min),ln(0) { p=new char[sz+1]; *p=0; } It worked fine until a certain amount (quite a lot) of memory had been consumed by the program then started crashing as 'p' was null after the new statement. Changed to: string() : min(64),sz(64),ln(0) { p=new char[sz+1]; *p=0; } and worked fine. Can you not use previous member constructor values in the constructor list then? Just curious really. Paul
Sep 20 2005