wywołanie konstruktora przy tworzeniu tablicy obiektów

0

szukałem na forum ale nie znalazłem rozwiązania tego problemu ... jeśli gdzieś istnieje to prosze o linka i z góry dziękuję
oto kodzik :

 
#include <iostream>
#include <cstdlib>

class Integer
      {
      int i;
      public:
      Integer(int ii = 0);
      void print();
      };

Integer::Integer(int ii) : i(ii) {}
void Integer::print() { cout << i << endl;}

using namespace std;

int main()
{
Integer i[100];
for(int j=0; j <100; j++)
        i[j].print();
      system("PAUSE");
      return 0;
}

i moje pytanie :
czy mogłbym przy okazji stworzenia tablicy obiektów
Integer i[100];
wywołac jakoś kontruktor ? tak aby na przykład cała tablica była inicjalizowana "9" a nie "0" ..
wiem ze zmiana wartości domyślenj kontruktora da taki efekt ale nie o to mi chodzi.
z gory dzieki za pomoc

0

Musisz sobie zdefiniowac domyslny konstruktor...

Integer::Integer(void){ i = 9; }

Nie jestem pewny, ale w takim przypadku mozliwe, ze trzeba jawnie zdefiniowac takze destruktor (moze to byc zalezne od kompilatora)

0

Zajrzyj tutaj: http://4programmers.net/Forum/viewtopic.php?id=55110&p=0 - być może będzie Ci pomocna sugestia Dryobatesa

0

Mozna tak:
Integer i[] = {Integer(10), Integer(16), Integer(14)};

0

Nie wiem czy o to dokładnie ci chodzi, ale można też to zrobić tak:

#include <iostream>

class Integer
 {
   private:
      static int i;
   public:
      void print() { std::cout << i << std::endl; }
      static void zmien(int liczba) { i = liczba; }

 };

int Integer::i;

int main()
{

Integer i[10];

Integer::zmien(5);
for(int j=0; j <10; j++) i[j].print();

Integer::zmien(8);
for(int j=0; j <10; j++) i[j].print();

return 0;

}
0

tomus, chyba nie dokładnie o to chodziło, ale bardziej o coś takiego:

#include <iostream>
using namespace std;

class Integer
{
      int i;
      static int liczba_poczatkowa;
   public:
      void print() 
	  { 
		  cout << i << endl; 
	  }

	  Integer( int ii )
	  {
		  i = ii;
	  }

	  Integer()
	  {
		  i = liczba_poczatkowa;
	  }
      
	  static void zmien_liczba_poczatkowa(int liczba) 
	  { 
		  liczba_poczatkowa = liczba; 
	  }

};

int Integer::liczba_poczatkowa;

int main()
{
	Integer i1(10); 
	Integer i2;

	Integer::zmien_liczba_poczatkowa( 9 );

	Integer i_tab[10];

	i1.print();
	i2.print();

	for (int i=0; i<10;i++)
		i_tab[i].print(); 

	return 0;
}

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