C cinsinden genel (veya türlenmemiş) bir dizi oluşturmak için uğraşıyorum (C++ bunu gerçekleştirdiğinin farkındayım) Daha kolay). Özetle, belirli bir bilinen türden bir diziyi (çalışma zamanında) tutmak için bir dizi ayırmak istiyorum. Gerçek uygulamada kullanıcı girdisine bağlıdır.Basit veya kodlanmamış (via void *) dizisinin nasıl kullanılabileceğini gösteren basit bir C kodu örneği için istekte bulunun
Çeşitli Google isabetlerinde bulunan tavsiyeleri izleyerek bir enum/struct senaryosunu kullanmaya çalışıyorum, ancak korkarım ki, boşluk işaretçilerine ve somut bir örneğe sahip olmadığım deneyimsiz olmamın, bir parça çalışma parçamı almamı engellemesidir. kodu. (Normalde sadece kitap satın alırdım ama dil bilmediğim bir ülkedeyim ve İngilizce programlama kitapları yok.)
Sorun aşağıdaki basitleştirmeye kadar iniyor: Bir resmim var (sadece 1D) piksel değerleri int, float veya double olabilir. Bana türünü söyleyecek bir fonksiyonum var. Tek istediğim, pikselleri uygun türde bir dizide saklamak. (Pratikte bu görüntüler çok büyük ve benim motivasyon hafızayı korumak ve her tür için kod yazma blokları önlemek için.)
Aşağıdaki gibi bir şey deniyorum ama belki de en iyisi değil (kod parçacığı)) olası bir veri yapısı için:
enum type {
typeint, typefloat, typedouble
};
struct genericarray {
enum type type;
void *storage;
};
Nedense ben generciarray örneklerinde bu pikselleri depolamak istiyor. Şimdiye kadar yaptığım bütün girişimler, anlamadığımı itiraf ettiğim "uyarı: dereferencing‘ void * "işaretçisine dönüştü.
Herhangi bir yardım için ve özellikle basitleştirilmiş örnek için çalışan bir jenerik dizinin nasıl elde edileceğine minnettar olacağım. Örnek, init için sadece döngüler kullanabilir. Gerçek resimlerimi nasıl yükleyeceğimi anlayabilirim.
** bir boşluk, uyarı önlemek kullanın. (Daha eksiksiz bir örnek için yanıtıma bakın) –