C++ ile eklentiler içeren bir programım var (dinamik lib'ler). Ana programda, bu tür bir nesne oluşturabileceğimi kontrol etmek için statik bir işlev yürütmek istiyorum.Miras sınıflarında statik bir işlevi yeniden oluşturmak için zorla
dinamik kütüphaneleri olmadan bir örneği (sorunu anlamak ettiniz değildir):
#include "libs/parent.h"
#include "libs/one.h"
#include "libs/two.h"
int main(int argc, char * argv[])
{
Parent* obj;
if (One::match(argv[1]))
obj = new One();
else if (Two::match(argv[1]))
obj = new Two();
}
Şimdi, bir arayüz sınıfı adında Ebeveyn var. Tüm eklentiler bu sınıftan miras alınır. İdeal olarak, Veli adında bir sanal statik fonksiyonum var ve tüm eklentilerin bu işlevi yeniden canlandırması gerekiyor.
Bu koddaki sorun, C++ 'da statik sanal işlev yapılamam, bu yüzden sorunu nasıl çözeceğimi bilmiyorum. Mil english için
Maalesef yaptım benim
Eğer 'match()' işlevi durağan ise, 'One :: match() 'olarak adlandırmıyor olsaydınız? Neden statik olmak zorunda? –
Üzgünüz, ben hata düzeltildiBu statik olmak zorundayım çünkü nesne oluşturmadan önce onu aramam gerekiyor – pacopepe222
Endişeye gerek yok, sanırım saf bir sanal yöntem kullanmak sizin için işe yarar, ama bu statik değil. Yani belki de başkalarının cevapları size daha fazla yardımcı olabilir. –