Çözüldü C++ ta for döngüsüyle nesne oluşturmak mümkün mü?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Çözüm
İlki gibi yapabilirsin. Sınıf vermediğin için farklı durumlardan söz edemiyorum. Array oluşturduğun için default constructor gerekiyor. Direkt kendisi oluşturuyor.

İkincisinde ise sen o an oluşturuyorsun. Heap'ten yer alıyorsun. Malloc ile almıyorsun.
Default constructor gerekmiyor. Çünkü ilklendirmiyor.

Vector vb. şeyler de kullanabilirsin. Tamamen ihtiyacına bağlı. Çok çeşitli şekillerde mümkün.

Kod:
#include <iostream>
#include <string>
#include <vector>
#include <array>

#define N 10

using namespace std;

class A {
public:
    int a;
    int b;

    A() : a{ 0 }, b{ 0 } {
    }

    A(int a, int b) : a{ a }, b{ b * b }{
    }
};

int main() {
    array<A, N> arr;

    for (auto& i:arr) {
        cout << i.a << ", " << i.b << endl;
    }

    for (auto i{ 0 }; i < N; ++i) {
        arr[i] = A(i, i + 7);
    }

    for (auto& i : arr) {
        cout << i.a << ", " << i.b << endl;
    }

    return 0;
}
Kod:
#include <iostream>
#include <string>
#include <vector>
#include <array>

#define N 10

using namespace std;

class A {
public:
    int a;
    int b;

    /*A() : a{ 0 }, b{ 0 } {
    }*/

    A(int a, int b) : a{ a }, b{ b * b }{
    }
};

int main() {
    auto arr = new A * [N];

    for (auto i{ 0 }; i < N; ++i) {
        cout << arr[i]->a << ", " << arr[i]->b << endl;
    }

    for (auto i{ 0 }; i < N; ++i) {
        arr[i] = new A(i, i + 7);
    }

    for (auto i{ 0 }; i < N; ++i) {
        cout << arr[i]->a << ", " << arr[i]->b << endl;
    }

    return 0;
}
Dinamik bellek yönetimini araştırabilirsin. Eğer sonradan kullanacaksan malloc ile dinamik bellekten yer ayırtman gerekir. Eğer for frame dışında kullanmayacaksan klasik şekilde oluşturabilirsin.

Objem degisken();
 
İlki gibi yapabilirsin. Sınıf vermediğin için farklı durumlardan söz edemiyorum. Array oluşturduğun için default constructor gerekiyor. Direkt kendisi oluşturuyor.

İkincisinde ise sen o an oluşturuyorsun. Heap'ten yer alıyorsun. Malloc ile almıyorsun.
Default constructor gerekmiyor. Çünkü ilklendirmiyor.

Vector vb. şeyler de kullanabilirsin. Tamamen ihtiyacına bağlı. Çok çeşitli şekillerde mümkün.

Kod:
#include <iostream>
#include <string>
#include <vector>
#include <array>

#define N 10

using namespace std;

class A {
public:
    int a;
    int b;

    A() : a{ 0 }, b{ 0 } {
    }

    A(int a, int b) : a{ a }, b{ b * b }{
    }
};

int main() {
    array<A, N> arr;

    for (auto& i:arr) {
        cout << i.a << ", " << i.b << endl;
    }

    for (auto i{ 0 }; i < N; ++i) {
        arr[i] = A(i, i + 7);
    }

    for (auto& i : arr) {
        cout << i.a << ", " << i.b << endl;
    }

    return 0;
}
Kod:
#include <iostream>
#include <string>
#include <vector>
#include <array>

#define N 10

using namespace std;

class A {
public:
    int a;
    int b;

    /*A() : a{ 0 }, b{ 0 } {
    }*/

    A(int a, int b) : a{ a }, b{ b * b }{
    }
};

int main() {
    auto arr = new A * [N];

    for (auto i{ 0 }; i < N; ++i) {
        cout << arr[i]->a << ", " << arr[i]->b << endl;
    }

    for (auto i{ 0 }; i < N; ++i) {
        arr[i] = new A(i, i + 7);
    }

    for (auto i{ 0 }; i < N; ++i) {
        cout << arr[i]->a << ", " << arr[i]->b << endl;
    }

    return 0;
}
 
Çözüm

Geri
Yukarı