Re: Problem with initialization of array of class objects
* yatko:
Hi all;
I want to define an array of objects and initialize them, but I don't
know how I could do that simply. I have searched over net, and have
found a few solutions. Does anybody has a better, simple solution?
Suppose there is a Foo class that has const member.
class Foo
{
public:
Foo(int, int);
~Foo();
private:
const int ID;
In general it's a good idea to reserve all uppercase names for macros.
Using them for constants is a Java'ism. Leads to problems in C++.
double int var;
There's no "double int" type in C++.
};
First method:
Foo objects [MAX] = {Foo(0,1),Foo(1,2),Foo(2,3)};
This method works nicely.
// This one requires copy constructor, but I have const members, so it
doesn't work for me.
It's opposite: the method below requires copy constructor, while the one
above doesn't.
Second method:
std::vector<Foo> objects;
objects[0] = * (new Foo(0,1));
objects[1] = * (new Foo(1,2));
objects[2] = * (new Foo(2,3));
//This one solves problem of const members, but I dont want to use
vector.
This doesn't work for const members.
I want to initialize the array as following, but it doesn't work.
Foo objects[MAX] = {{0,1},{1,2},{2,3}};
Works OK.
Post actual code that doesn't work (see the FAQ item how to get help
with Code That Does Not Work).
Cheers, & hth.,
- Alf
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?