Another way to handle array initialization

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

PROBLEM: bwh@kato.prl.ufl.edu (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: kanze@us-es.sel.de (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.)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航