Brian.Chan@samba.acs.unc.edu (Brian Chan) (03/27/91)
Can someone help me with a beginner's question?
Say I have the following declarations:
Class A: {
int a;
int b;
}
Class B: public A {
...
}
And constructors:
Class A::A(int x, int y)
{
...
}
Class B::B(int z, int x, int y)
:A(x, y)
{
...
}
If I declare B b1(1,1,1), b2(2,2,2), no problem.
But if I want to declare a table (array) of Bs, say , 2, how do I do it?
I tried the following:
B b[] = { {1, 1, 1}, {2, 2, 2}}; // won't work
B b[2]; // won't work obviously
The only way I could make the array method to work was to declare (void)
in
the constructors, and create some member functions say, create(int, int,
int)
within A and B. It looks pretty ugly.
Any toughts or hints?
Thx very much for your time in advance,
Brian Chan.
Stuttgart, FRG
--
=============================================================================
Extended Bulletin Board Service, Research & Development
Office of Information Technology, University of North Carolina at Chapel Hill
internet: bbs.acs.unc.edu or 128.109.157.30steve@taumet.com (Stephen Clamage) (03/29/91)
Brian.Chan@samba.acs.unc.edu (Brian Chan) writes: >Say I have the following declarations: >Class A: { int a; int b; } >Class B: public A { ... } >And constructors: >Class A::A(int x, int y) { } >Class B::B(int z, int x, int y) :A(x, y) { ... } > ... >But if I want to declare a table (array) of Bs, say , 2, how do I do it? You cannot declare an array of class objects using other than the default (no parameters) constructor. There is no syntax to support it. You can declare a constructor with all default parameters standing in for the default constructor, and that one will be used. That's the best you can do. (This last is a language change, and works with recent C++ compilers.) -- Steve Clamage, TauMetric Corp, steve@taumet.com
lijewski@theory.tn.cornell.edu (Mike Lijewski) (03/29/91)
In article <642@taumet.com> steve@taumet.com (Stephen Clamage) writes: >Brian.Chan@samba.acs.unc.edu (Brian Chan) writes: > >>Say I have the following declarations: >>Class A: { int a; int b; } >>Class B: public A { ... } >>And constructors: >>Class A::A(int x, int y) { } >>Class B::B(int z, int x, int y) :A(x, y) { ... } >> ... >>But if I want to declare a table (array) of Bs, say , 2, how do I do it? > >You cannot declare an array of class objects using other than the default >(no parameters) constructor. There is no syntax to support it. You can >declare a constructor with all default parameters standing in for the >default constructor, and that one will be used. That's the best you can do. >(This last is a language change, and works with recent C++ compilers.) You certainly can declare arrays of class objects using other than the default constructor. The following declares an array of four objects of class B: class B barray[] = { B(1,2,3), B(4,5,6), B(7,8,9), B(10,11,12) }; >-- > >Steve Clamage, TauMetric Corp, steve@taumet.com -- Mike Lijewski (H)607/272-0238 (W)607/254-8686 Cornell National Supercomputer Facility ARPA: mjlx@eagle.cnsf.cornell.edu BITNET: mjlx@cornellf.bitnet SMAIL: 25 Renwick Heights Road, Ithaca, NY 14850