SORU
23 Kasım 2012, Cuma


Neden özel bir türü otomatik kullanabilir miyim?

Aşağıdaki kodu derler ve (vc2012 & gcc4.çalışan bir şekilde şaşırdım 7.2)

class Foo {
    struct Bar { int i; };
public:
    Bar Baz() { return Bar(); }
};

int main() {
    Foo f;
    // Foo::Bar b = f.Baz();  // error
    auto b = f.Baz();         // ok
    std::cout << b.i;
}

Bu kod iyi derler doğru mu? Ve neden doğru mu? Neden onun adı (beklendiği gibi) kullanamıyorum sırasında özel bir türü üzerinde auto kullanabilir miyim?

CEVAP
23 Kasım 2012, Cuma


Erişim kontrolü için uygulanırisimler. Standart: bu örnek, karşılaştırın

class A {
  class B { };
public:
  typedef B BB;
};

void f() {
  A::BB x; // OK, typedef name A::BB is public
  A::B y; // access error, A::B is private
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elly

    Elly

    3 EKİM 2005
  • FrameCityJackal

    FrameCityJac

    4 Aralık 2010
  • lifeisforsharingDT

    lifeisforsha

    18 Mayıs 2011