Bir dll ve bazı uygulama kodları arasında paylaşılan bir temel sınıf oluşturmam gereken bir programım var. Sonra ana uygulamada dll biri olmak üzere iki farklı türetilmiş sınıfım var. Bunların her biri, nase sınıfındaki veriler üzerinde çalışan bazı statik üye işlevlerine sahiptir. (Başka yerlerde fonksiyon gösterici olarak kullanıldığı gibi statik olmaları gerekir). En basit haliyle, benim sorunum aşağıda gösterilmiştir.Korumalı üyelere temel sınıftan türetilmiş bir sınıftaki statik işlevden erişebilir miyim?
class Base {
protected:
int var ;
};
class Derived : public Base {
static bool Process(Base *pBase) {
pBase->var = 2;
return true;
}
};
Benim derleyici ben Base erişimi koruduğuna Türetilmiş rağmen Ptaban ait korumalı üyelerine erişemez şikayet ediyor. Bunun bir yolu var mı, yoksa bir şeyi yanlış anlamış mıyım? Temel değişkenleri herkese açık hale getirebilirim, ancak bu benim gerçek örneğimde olduğu gibi kötü olacaktır, bunlar bir ayrılmış bellek yığınıdır ve çoklu okuma için bunu korumak için kullanılan semaforlardır.
Yardım?
olası yinelenen (http://stackoverflow.com/questions/4829518/accessing-parents-protected-variables). Bu, özellikle fonksiyonun "statik" olup olmadığı değil, temel üyeye erişildiği parametrenin "Türetilmiş" türünde olmamasıdır. –
Statik fonksiyonun argümanı, fonksiyon göstericisinin çağrı gereksinimlerine uygun temel sınıfta olmalıdır. Belki bir dinamik döküm –
kullanarak alabilirsiniz. Eğer işlev sadece 'Base' nesnelerini' Base' nesnesine 'türevli' nesnelere dönüştüren 'static 'nesnesine dönüştürmek için kullanabilirsiniz. Fonksiyon gövdesinde 'Base *' 'Türetilmiş *'. Aksi halde “Base” bir “arkadaş” olmanız ya da “var” kelimesini halka açıklayabilmeniz gerekir. Bunlardan hiçbirini yapamazsan, sıkışmışsın demektir. –