SORU
13 Ocak 2010, ÇARŞAMBA


Neden'ileri-ilan böyle bir ad alanında bir sınıf değil mi?

class Namespace::Class;

Bunu neden yapmak zorundayız?:

namespace Namespace {
    class Class;
}

VC kullanarak 8.0, derleyici sorunları:

hata C2653: '' : sınıf veya ad alanı adı değil . Ad

Ben burada sorun, derleyici olamaz Namespace bir sınıf veya bir ad alanı olup olmadığını söylemek olduğunu varsayalım? Ama neden bu sadece ileri bir beyan olduğu için bir önemi var mı?

İleri-beyan bir sınıf bazı ad alanında tanımlanan başka bir yolu var mı? Sözdizimi yukarıda "" ad ve tanımı uzatır. yeniden açıyorum gibi geliyor Eğer Class aslında Namespace içinde tanımlı değilse ne? Bu noktada bir hata neden olur?

CEVAP
13 Ocak 2010, ÇARŞAMBA


Doğru cevaplar alıyoruz, bana yeniden ifade deneyelim:

class Namespace::Class;

Bunu neden yapmak zorundayım?

10 ** dönem derleyici söylüyorum çünkü bunu yapmak zorunda:

...TAMAM, derleyici. Bu bul ad adında bir Ad, ve içinde sınıf Sınıf adlı bakın.

Ama derleyici herhangi bir AD AD adlı bilmiyor çünkü neden bahsettiğini hatırlayamadığını söylüyor. Eğer bir AD AD adlandırılmış olsa bile, içinde:

namespace Namespace
{
};

class Namespace::Class;

hala ad dışarıdan bir ad alanı içinde bir sınıf bildirebilirsiniz. çünkü iş, olmaz. Ad olmak zorunda.

Yani, bir ad alanı içinde aslında ileri bir sınıf bildirebilirsiniz. Sadece bunu yap:

namespace Namespace
{
    class Class;
};

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • Submissions101

    Submissions1

    23 ŞUBAT 2007
  • The10HourMan

    The10HourMan

    28 EYLÜL 2012