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

  • efaustus9

    efaustus9

    16 HAZİRAN 2006
  • Kyletiv7

    Kyletiv7

    28 Mayıs 2007
  • SerienTrailerMP

    SerienTraile

    7 HAZİRAN 2012