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

  • arnejann

    arnejann

    3 Kasım 2007
  • audivila

    audivila

    5 HAZİRAN 2009
  • Sparta Spartanutul

    Sparta Spart

    18 HAZİRAN 2013