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

  • BMG Rentals Property Management

    BMG Rentals

    23 Mayıs 2011
  • Shylo Sharity

    Shylo Sharit

    27 EKİM 2011
  • FF Radioo

    FF Radioo

    14 ŞUBAT 2007