www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/04/01/23:41:25

From: "Andrew Reid" <ac_reid AT hotmail DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: problem with new[] using djgpp egcs
Date: Fri, 2 Apr 1999 16:27:41 +1200
Organization: University of Canterbury
Lines: 33
Message-ID: <7e1h02$7nu$1@cantuc.canterbury.ac.nz>
NNTP-Posting-Host: acr28.tacacs.canterbury.ac.nz
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.00.2014.211
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2014.211
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

I'm having a problem with the standard new[] operator

The following code (a simple example) compiles and works fine with the
djgpp(2.02) port of gcc 2.81, and with egcs under Redhat Linux 5.2, but
causes an error when I try to use egcs 1.1.2 for djgpp or pgcc for linux

int main( void ) {
 int* x = new int[5](0);
}

The error message I get is:
request for member `__ct' in `*{anon}', which is of non-aggregate type `int'
and obviously the compiler is going to get stuck if it's trying to find
members of a built in type

What is also interesting is the fact that compiling the statement T* x = new
T[n]( const T& ) never causes any problems unless T is a builtin type.

My application of this code is in a template class where not all the types
that the template is instantiated for have a default constructor, so I need
to provide a default object of type T to the new operator.

I have a number of questions:
Does anyone know why this won't compile under egcs for djgpp while gcc
appears to be happy?
Am I using the wrong libraries or headers? or perhaps I need a different
version of the compiler?
Is this standard c++?  If it isn't, then how should I tackle my problem in a
standard compatible manner?

Thanks heaps - any help will be much appreciated


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019