Java'dan C++ 'ya bir bilimsel simülasyon platformu dönüştürdüm. Tasarımı, önceki uygulama ile olabildiğince aynı tutmaya çalıştım. Geç bağlama nedeniyle javada, döngüsel bağımlılıklar çalışma zamanında çözülür. Ancak, dairesel bağımlılıklar C++ 'da bir karışıklık yarattı.C++, karşılıklı ihtiyaçları olan iki sınıf
Dairesel içerme ve referansları analiz eden ve listeleyen otomatik bir araç var mı? (Visual Studio 2010, sadece saçma sapan hataların büyük bir listesini verir).
Mümkün olan yerlerde ileri referansları kullanmaya çalıştım. Bununla birlikte, bazı durumlarda her iki sınıfa da , diğer sınıfın işlevselliğine (yani, ileri referansın kullanılmasını imkansız kılan metotlara çağrı) ihtiyaç duyulmaktadır. Bu ihtiyaçlar Mantık'ta var olur ve eğer tasarımı kökten değiştirirsem gerçek dünya etkileşimlerini temsil etmeyeceklerdir.
Birbirimizin yöntemlerine ve durumuna ihtiyaç duyan iki sınıfı nasıl uygularız? Onları C + + 'da uygulamak mümkün mü?
Örnekler:
- Örnek 1: Ben tip "Ajan" nin Nesneleri yaratır "Dünya" adlı bir sınıf var. Ajan, çevreyi hakkında bilgi almak için Dünya yöntemlerini çağırmalıdır. Dünya'nın ayrıca Aracılar aracılığıyla yinelemesini ve "koşma" yöntemini çalıştırması ve durumlarını alması gerekir (durum güncellemeleri, sorunun bu bölümünü çözmek için tersine, ancak çalıştırma yöntemini tersine çevirmek zorunda kalabilir).
- Örnek 2: Aracılar "Amaçları" nın bir koleksiyonunu oluşturur. Her Ajanın niyetleri doğrultusunda yinelemesi ve/update/read niyet durumunu çalıştırması gerekir. Niyetlerin ayrıca, Ajan aracılığı ile çevre hakkında bilgi almaları gerekmektedir (eğer doğrudan "Dünya" üzerinden yapılırsa, yine karmaşık çevreler yaratacaktır) ve ayrıca Ajanın kendisinin bilgisi. diyagram Aşağıda
sınıfların bir alt kümesini gösterir ve onların yöntemleri ve bazı özelliklerini:
Hatalarla ilgili sorun yaşarsanız, bu hataları içeren bir soruyu her zaman gönderebilirsiniz (sözdizim lütfen) ve birileri size büyük olasılıkla yardımcı olabilir. Ayrıca, bu hatalar size saçma olabilir, ama başkasına değil. Bazı kodları görmeden soruları cevaplamak çok zordur ve bunun için http://sscce.org/ adresini okumanızı tavsiye ederim. –
Joachim, Dairesel bağımlılık durumlarında oluşan hataların türüdür. Sınıflar belirlenemez. 'code' 1> e: \ programming \ cprojt \ actiondb11 \ actiondb \ base \ world.h (35): hata C2143: sözdizimi hatası: eksik ',' önce '*' 1> e: \ programming \ cprojt \ actiondb11 \ actiondb \ base \ world.h (36): hata C2061: sözdizimi hatası: tanımlayıcı 'Ajan' 1> e: \ programming \ cprojt \ actiondb11 \ actiondb \ base \ world.h (50): error C2065: ' Agent ': bildirilmemiş tanımlayıcı – wmac
Kodun gönderilmesi, hataların kaydedilmesinden çok daha yararlıdır. Gönderme * her ikisi de en iyisidir. –