Çö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.

heisenrut

Decapat
Katılım
3 Mayıs 2021
Mesajlar
22
Makaleler
1
C++ döngü ile nesne oluşturmak istiyorum biraz araştırma yaptım fakat anlayamadım.
 
Çö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
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…