SORU
18 Mayıs 2009, PAZARTESİ


Neden C bir işlev içindeki yapılar ve sınıflar tanımlayabilir miyim ?

Ben sadece yanlışlıkla C böyle bir şey yaptım ve işe yarıyor. Neden bunu yapabilir miyim?

int main(int argc, char** argv) {
    struct MyStruct
    {
      int somevalue;
    };

    MyStruct s;
    s.somevalue = 5;
}

Bundan sonra bu işi yapıyorsun, ben biraz hatırladım okuma hakkında bu numarayı bir yere, uzun zaman önce, bir çeşit fakir adamın fonksiyonel programlama aracı için C , ama ben hatırlamıyorum bu yüzden geçerli, ya da nerede okudum bunu.

İki soruya da cevap bekliyoruz!

Not: Gerçi yazarken ben soruyu anlamadım tüm başvuruları this question mevcut yan bar puan bu kadar koyacağım buraya referans ya da böyle soru farklı ama yararlı olabilir.

CEVAP
18 Mayıs 2009, PAZARTESİ


[18/4/2013 EDİT]:Mutlu bir şekilde, kısıtlama aşağıda belirtilen C 11, Bu yüzden yerel olarak tanımlanmış sınıfları sonuçta yararlı kaldırılmıştır! Bamboon yorumcu için teşekkürler.

Sınıflar yerel olarak tanımlama yeteneğiözel funktorlar (operator()(), örneğin bir karşılaştırma ile sınıflar std::sort() geçen fonksiyonlar ya da "döngü ceset" std::for_each()) ile kullanılmak üzere) çok daha uygun. yapma yapmak

Ne yazık ki, C şablonlar ile yerel olarak tanımlı sınıfları kullanarak yasaklaryok bir bağlantı var gibi. Functor türü şablon şablon türleri dahil funktorlar çoğu uygulama bu yana, yerel olarak tanımlanmış sınıflar işlevi dışında onları tanımlamalısınız için kullanılabilir. :(

[DEĞİŞTİR 1/11/2009]

Standart ilgili alıntı:

14.3.1/2:.Yerel bir türü, hiçbir bağlantı ile bir tip, adı açıklanmayan bir türü ya da bir tür bu tür bileşik bir değişken şablon için bir şablon olarak tip-parametre kullanılamaz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FailArmy U

    FailArmy U

    29 AĞUSTOS 2009
  • Ludique

    Ludique

    21 NİSAN 2009
  • Sean Murphy

    Sean Murphy

    4 ŞUBAT 2009