C++ 'ya göreceli olarak yeniyim ve bunun için bir cevap için çok şey aradım ama hiçbir zaman tatmin edici bir cevap almadım.Dış sınıftan erişen iç sınıf
FSM
adlı bir yapımız olduğunu varsayalım. Sonunda kodumda, FSM
çoklu örnekleri oluşturulabilir. FSM
öğesinin özelliklerinden biri statik değil, FSM
numaralı telefonun X
için kendi değerine sahip olması gereken int X
.
Error: 'FSM::getX' : illegal call of non-static member function
Sorum şu:
struct FSM
{
public:
int x;
int getX(){return x;}
struct submachine
{
void onentry() {int g = getX();};
};
};
Bu aşağıdaki hata verir:
Şimdi FSM
'ın vasıflarından biri böyle X
değerini okumak gerekiyor başka yapı submachine
olduğunu , submachine
, FSM
'un bir üyesidir, bu nedenle FSM
'un tüm özelliklerinin yerel örneklerine erişmesi gerekmiyor mu? Ve eğer değilse, bir FSM
örneğini oluşturduğumuzda, tüm üyeleri yani submachine
'un bir örneğini oluşturmuyor muyuz? Ve eğer öyleyse, o zaman neden onentry()
'un ihtiyacı olan bir nesneyi yaratmamız gerekiyor?
Derleyicinin doğru olduğunu farz ediyorum, bu yüzden bu işi yapmak için bir yol olup olmadığını bilmek istiyorum.
Not: Ne yazık ki, bir olay çağrıldığında iç yapıların örnekleri (submachine
) başlatılır ve bu nedenle yalnızca türünü tanımlayabilirim ve FSM
içinde onlar için nesneleri başlatılamıyor.
Ben başarmak istediğiniz başarmak için bir yol varsa? – Kam
Downvoter: paylaşmaya özen gösteriliyor mu? –
(Gecikme için üzgünüz, bağlantıyı buluyordum). İç içe sınıfları, bir parçası üyeleri ve [DR 45] (http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#45) 'ye bakınız başka üyeleri gibi, dış sınıf erişebilir 2003 yılından bu yana standart sorumu güncelledik –