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

  • AverageBroTV

    AverageBroTV

    20 Mart 2013
  • Liz Morgan

    Liz Morgan

    4 Aralık 2011
  • martin shervington

    martin sherv

    7 EKİM 2011