W jaki sposób tworzyć tablicę obiektów?

0

Mam klasę "dane", z konstruktorem: dane(int, int );. W jaki sposób mogę stworzyć tablicę obiektów?
Próbowałem coś takiego , ale nie dział:

dane nazwa [20] (2,3); 
0

dane x[20];
for (int i=0;i<20;i++)
{
x[i] = dane(2,3);
}

np.tak?

0

Ale statyczną? Można tak:

dane nazwa [20] = { dane(2,3),dane(2,3),dane(2,3),dane(2,3),...};
0

A dynamiczna jak można bo mnie to zaintrygowało.
Jedyne co mi przyszło do głowy to

class a
{
    public:
    int a;
    int b;
    a( int c , int d)
    {
       
        a=c;
       b=d;
       
    }
 
};

int main()
{
a **zm = new a*[3];
zm[0] = new a(2,2);

Jest jakies inne rozwiązanie?

0

Nie. Nie da się wywołać innego konstruktora niż bezargumentowy.

0

Kolejna rzecz mnie zaintrygowała. Mianowicie wywoływanie z konstruktorów innych konstruktoróww celu inicjalizacji określonych poł. Przykład:

class a
{
    public:
    int f;
    int b;
    int c;
    a( int w) 
    {
       a( 5,5);
        f=w;
        
        
       
    }
    a ( int  t , int y) : b(t) , c(y)
    {
        
    }
    
    
    
 
};

int main()
{
a *zm = new a(0);;
cout<<zm->c;

wyświetla na ekranie c=0, a nie 6; Da się jakoś sprawić, aby to działało?

0

To nie java i nie wywoływanie super(), ale możesz pewnie zrobić tak:

a( int w):a( 5,5)
{
  f=w;
}
0

Tez przyszła mi do głowy lista inicjalizacyjna, ale niestety kompilator ( dev) nie akceptuje takiego zapisu : class a' is not a direct base of a'. W przypadku wywoływania a(5,5) z ciała innego konstruktora wszystko niby jest poprawnie i program faktycznie wchodzi do wywoływanego konstruktora, ale jakby ignoruje wszystkie przypisania do pol klasy.

Wszystko natomiast działa, gdy z konstruktora wywołuje zwykła metodę i tam przypisuje jakieś wartości do pól klasy.
Java znacznie lepiej rozwiązała ten problem, a szkoda.

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