Archief - c++ initialization van lists, vectors enz.

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

rubenvb

Legacy Member
Beste 9livers!

Ik heb een vraagje over de initialisatie van de container klassen van c++ (eigenlijk meer bepaald Qt).

Ik zou graag in een member initialization list van een klasse van mij zoiets doen:
Code:
...
member_list( new list<int>( {1,2,3} ) )
...
Waar dus 1,2,3 de drie list items zijn.
Maar blijkt dat zo'n constructor niet bestaat :(
Is er een manier om dit klaar te spelen of kan ik de list enkel initialiseren in de constructor body?

Merci!

Tyfius

Legacy Member
Voor zover ik mij herinner gaat dat niet rechtstreeks neen. In de volgende versie van C++ zou wel iets gelijkaardigs moeten komen. Dan kan je het volgende doen:
Code:
list<int> *test = new list<int>() { 1, 3, 5, 7};
Je kan wel min of meer hetzelfde bekomen door eerst met een array te werken.
Code:
#include <iostream>
#include <list>

using namespace std; // Yeah, sue me.

int main(void)
{
	int values[] = { 1, 3, 5, 7 };
	list<int> *test = new list<int>(values, values + sizeof(values) / sizeof(int));

	cout << "Contents: ";
	for (list<int>::iterator it = test->begin(); it != test->end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;

        // neut, memory leak blabla 't is een sample om een idee te krijgen.
        delete test;

	return 0;
}
Als output geeft dit dan:
Code:
jensen@atlantis:~/Desktop$ ./a.out 
Contents: 1 3 5 7

rubenvb

Legacy Member
Hier vreesde ik al voor. Dan zal ik maar de constructor gebruiken om die lists te vullen.

PS: volgende versie van c++? Wanneer gaat dat gebeuren?

NeverwinterX

Legacy Member
volgens wikipedia:

The ISO/IEC JTC1/SC22/WG21 C++ Standards Committee originally aimed to have the new standard published by 2009 (the standard that is today called C++0x would become C++09 at the latest). However, there is now some debate over when the standard will be published. The final committee draft of the standard may be issued by the end of 2009 and the final draft international standard by the end of 2010, however, WG21 expects it to take six months to a year before the standard is officially published by ISO, leading to its publication by the end of 2011.[1] To be able to finish on schedule, the Committee decided to focus its efforts on the solutions introduced up until 2006 and ignore newer proposals.[2]

rubenvb

Legacy Member
Daar vreesde ik al voor :)... tegen dat de compilers die standaard dan ook ondersteunen zal ook wel een tijdje duren. Merci voor de info (die ik zelf ook had moeten vinden:sad:)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan