C++ 'ya yeniyim ve biraz yardım isterim.C++ 'da, bir ana sınıftan miras alınan bir dizi nesne nasıl oluşturulur?
Ben nesneleri dizisini oluşturmak gerekiyor ve ben anladım kadarıyla, o kullanılarak yapılır:
MyObject* instance = new MyObject[nb_of_instances_in_array];
olsa da, oldukça ihtiyaçlarımı uymuyor.
Farklı yöntem ve özelliklerden başka 3 nesneyi miras alan bir ana nesnem var.
mainObject < - Object1
mainObject < - Object2 < - Object3
Şimdi Object1s, Object2s ve Object3s içerebilen bir dizi oluşturmak istiyorum. Ben böyle bir şey yaptığını çalıştı:int nb_of_obj, i;
cin >> nb_of_obj;
mainObject* arrayOfMainObjects = new mainObject[nb_of_obj];
for(i = 0;i<nb_of_obj;i++)
{
//Menu to select Object to append to the array
arrayOfMainObjects[i] = Object2(args...);\\there are between 3 and 5 args for each object
}
delete arrayOfMainObjects;
ve ben de Stdlib.h en malloc ve ücretsiz kullanarak daha fazla C odaklı yöntem denedik.
*(arrayOfMainObjects + i*max_size()) = Object2(args...);
yerine:
arrayOfMainObjects[i] = Object2(args...);
using namespace std;
size_t max_size();
return (size_t)(max(max(sizeof(Object1),sizeof(Object2)), max(sizeof(Object3), sizeof(mainObject))));
mainObject* arrayOfMainObjects = NULL;
arrayOfMainObjects = (mainObject*) malloc(nb_of_obj*max_size());
//Globally, same code than above
free(arrayOfMainObjects);
ben yanlış yapıyorum bilmiyorum, ben bile böyle bir şey dizideki "nokta" Önümüzdeki erişen yapıyor çalıştı
Bize neyi denediğiniz ile ilgili yanlışları anlatmıyorsunuz (ve genellikle özel gereksinimler hariç C++ 'da malloc kullanmıyorsunuz). – crashmstr
Bir std :: vector> 'kullanmayı öneririm. –
@ πάνταῥεῖ Eğer o düşük bir yüke gidiyorsa (Bu durumda dizileri gerçekten kullanması için sadece neden) o zaman 'std :: vector>' ifadesini kullanarak marjinal olarak yavaşlatacaktır. (Her ikisi de oluşturma ve silme için) –