News:

This week IPhone 15 Pro winner is karn
You can be too a winner! Become the top poster of the week and win valuable prizes.  More details are You are not allowed to view links. Register or Login 

Main Menu

c+= array tips - Another way to handle array initialization

Started by ben2ong2, October 06, 2006, 05:57:02 PM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

ben2ong2

PROBLEM: You are not allowed to view links. Register or Login (Brian Hook)

[...]

I STILL haven't gotten a good technical reason why
parameters to constructors for arrays haven't been at least talked out (I'm
not a committee member, so I don't know if this has been shot down
informally, so if it has, forgive my lack of knowledge on this).

I even asked The Man himself, and his response was basically that he didn't
see much need for it.  I know I run into instances on occasion where I want
to specify something that is constant over an entire array of objects.  For
example, something even as simple as "name".

Object array1[100]("Member of array1");
Object array2[100]("Member of array2");

I suppose templates serve much the same purpose, but it just seems so
damned inconsistent to not have parameters to constructors for arrays!

Sure, there's the old trick:

Object::name = "Member of array1";
Object array[100];
Object::name = "Member of array2";
etc. etc.

Now if THAT ain't ugly, I don't know what is!


RESPONSE: You are not allowed to view links. Register or Login (James Kanze), 6 Jul 94

The trick I use is slightly different:

   template< double r , double i >
   class ComplexWithInit : public Complex
   {
   public :
                           ComplexWithInit()
                               :   Complex( r , i ) {}
   } ;

   Complex*            c1 = new ComplexWithInit< 1.0 , 2.0 >[ 10 ] ;
   Complex*            c2 = new ComplexWithInit< 3.0 , 4.0 >[ 20 ] ;

Formally speaking, this is *not* guaranteed to work.  Practically, I
would be interested in hearing about a plausible implementation where
it will not actually work.  (Finding the correct standardese which
would permit guaranteeing this to work without causing problems
elsewhere is a non-trivial problem, however.)
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login