Faza inicjalizacji konstruktora

0

Witam. Mam taki kod:

class Klasa1
{
	public:
		int its_zm;
		Klasa1() : its_zm(0) {}
		Klasa1(int a) : its_zm(a) {}
}

class Klasa2
{
 	public:
		int tab_int[20];
		char tab_char[20];
		int its_zm;
		Klasa1 obiekt;
		Klasa2(int inicj): its_zm(inicj), tab_int(???), tab_char(???), obiekt(???) {} // tutaj!
}

Moje pytania brzmią tak:

  1. Czy da się zainicjalizować tablice int/char w fazie inicjalizacji konstruktora? Jeśli tak to w jaki sposób? Prosiłbym o przedstawienie tego problemu na powyższym przykładzie ;)
  2. Wyczytałem że tworząc obiekt klasy Klasa2 do stworzenia skladowej obiekt zostanie wywołany automatycznie domyślny konstruktor Klasa1 a jak wymusić wywołanie innego konstruktora tak abym mógł zainicjalizować również ten obiekt("skladowa")?
0
  1. Co konkretnie masz na myśli mówiąc "zainicjalizować" ?
  2. Użyj listy inicjalizacyjnej
0

Pisząc zainicjalizować mam na myśli nadanie wartosci elementom tablicy.. Użyć ale jak? konkretniej bym prosił..;]

0
Klasa2(int inicj) : obiekt(inicj) {}

Z tablicami się tak nie da, musisz je zainicjalizować ręcznie w ciele konstruktora.

0

Tak myslalem, ale wolalem sie upewnic ;) dzieki za odpowiedz;)

0

W C++0x można zrobić tak:

 #include <iostream>
#include <vector>
using namespace std;
struct state{
	int b[5];
	vector<int> c;
	state():b({1,2,3,4,5}),c({2,4,6,8,10}){}
};
int main(){
	state s;
	for (int i=0; i<5; i++)
		cout<<s.b[i]<<' '<<s.c[i]<<'\n';
}
0

za dużo nawiasów, można zrobić

state():b{1,2,3,4,5},c{2,4,6,8,10}{}

PS. finalna wersja standardu już jest, i będzie opublikowana w tym roku - więc można już mówić o C++11.

0

Ok dzięki;) Mam jeszcze małe pytanko: CZy C++0x bardzo rózni się od obecnego standardu? Pytam ponieważ jestem w trakcie nauki C++ i nie wiem czy będe musiał uczyć się "na nowo" czy to tylko kwestia zapisu nie ktorych elementów jezyka?

0

C++0x jedynie rozszerza istniejący standard,nie wywraca go do góry nogami

Rozszerza, ale na tyle mocno, że momentami to nie wygląda już jak stary dobry C:

auto main() -> int
{
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1