SORU
28 Ocak 2009, ÇARŞAMBA


İç sınıflar özel değişkenleri erişebilir?

   class Outer {

      class Inner {
          public:
              Inner() {}
              void func() ;
      };

  private:
      static const char* const MYCONST;
      int var;

  };

  void Outer::Inner::func() {
      var = 1;
  } 

  const char* const Outer::MYCONST = "myconst";

Ben sınıf ile derlerken bu hata Dış::İç' hiç bir üye `adlı, var'

CEVAP
28 Ocak 2009, ÇARŞAMBA


Bir iç sınıf içinde tanımlanan sınıf arkadaşım.
Yani, Evet; Outer::Inner türünde bir nesne Outer Üye değişken var erişebilir türde bir nesne.

Java aksine olsa da, türünde bir nesne Outer::Inner ve üst sınıfın bir nesnesi arasında korelasyon yok. Ebeveyn çocuk ilişkisi yapmak için el ile.

#include <string>
#include <iostream>

class Outer
{
    class Inner
    {
        public:
            Inner(Outer& x): parent(x) {}
            void func()
            {
                std::string a = "myconst1";
                std::cout << parent.var << std::endl;

                if (a == MYCONST)
                {   std::cout << "string same" << std::endl;
                }
                else
                {   std::cout << "string not same" << std::endl;
                }
            }
        private:
            Outer&  parent;
    };

    public:
        Outer()
            :i(*this)
            ,var(4)
        {}
        Outer(Outer& other)
            :i(other)
            ,var(22)
        {}
        void func()
        {
            i.func();
        }
    private:
        static const char* const MYCONST;
        Inner i;
        int var;
};

const char* const Outer::MYCONST = "myconst";

int main()
{

    Outer           o1;
    Outer           o2(o1);
    o1.func();
    o2.func();
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Damien Hayes

    Damien Hayes

    11 Mart 2008
  • HTC Tutorials

    HTC Tutorial

    21 EYLÜL 2010
  • paikimchung

    paikimchung

    12 Mayıs 2006