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

  • ethr95awd

    ethr95awd

    8 Kasım 2006
  • TheJoeycool2010

    TheJoeycool2

    12 Temmuz 2010
  • thelonelyisland

    thelonelyisl

    23 Aralık 2005