[Qt-interest] Initialize const Qt container class
Constantin Makshin
cmakshin at gmail.com
Mon Oct 25 21:01:09 CEST 2010
Insertion is modification. And you can't modify a const object.
On Monday 25 October 2010 19:57:30 Julien Cugnière wrote:
> 2010/10/25 Joshua Grauman <jnfo-c at grauman.com>
> >
> > Here's what I'd like to do (with standard c types):
> >
> > struct item
> > {
> > char string[20];
> > int list[10];
> > };
> >
> > //the following is nice and readable, easy to modify, etc.
> > const struct item items[4] = {
> > {"string1",{1,2,3,5,6,0}},
> > {"string2",{4,0}},
> > {"string3",{2,5,0}},
> > {"",{0}}
> > };
> >
> > This makes it very easy to read and change my data initialization. But I'd
> > like to do this with Qt classes (QString and QList<int>) instead.
>
> Most Qt containers have an insertion operator, similar to streams :
>
> const QList<int> list = QList<int>() << 1 << 2 << 15 << 3 << 7;
>
> For complex types it's a bit harder, but still possible :
>
> struct Item {
> Item(QString string, QList<int> list) : string(string), list(list) {}
> QString string;
> QList<int> list;
> };
>
> const QList<Item> items = QList<Item>()
> << Item("string1", QList<int>() << 1 << 2 << 3 << 5 << 6)
> << Item("string2", QList<int>() << 4)
> << Item("string3", QList<int>() << 2 << 5);
>
> --
> Julien Cugnière
More information about the Qt-interest-old
mailing list