Михаиллл
Шілде 9, 2020, 7:50 Т.Қ.

Вопрос по указателям в с++

Добрый день.
Я создаю это

 xxx *x1 = new xxx();

и у меня есть класс с указателем

xxx *x2

как правильно сделать функцию у класса, что бы х2 указывал на область памяти х1?
Это не работает:

void v(xxx *x3){
 x2=x3;
}

void v(xxx *x3){
 *x2=*x3;
}
2

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

5
Михаиллл
  • Шілде 9, 2020, 8:42 Т.Қ.

по идее так компилирует, но результат пока не понятен

void v(xxx &x3){
 x2=&x3;
}
    ДК
    • Шілде 9, 2020, 8:59 Т.Қ.

    зачем для этого метод создавать?

    SomeClass *cl1 = nullptr;
    SomeClass *cl2 = new SomeClass(this);
    
    cl1 = cl2;
    

    теперь cl1 может вывзывать методы, тк указатель на область памяти выделенную cl2 указывает;

      Михаиллл
      • Шілде 9, 2020, 9:05 Т.Қ.

      Так не подойдет. Этот класс внутри другого класса, который я создаю через функцию, в которой есть х1,
      , потому все же нужна функция.

        ДК
        • Шілде 9, 2020, 9:13 Т.Қ.
        • (өңделген)

        Так можно обыграть, если вам нужны методы приватного класса.

        class Class1
        {
        public:
            explicit Class1(){
                _cl2 = new Class2;
            }
            void someFooGeneral(){ _cl2->SomeFoo(); }
        private:
            class Class2{
            public:
                void SomeFoo(){}
            };
            Class2 *_cl2;
        };
        
          Михаиллл
          • Шілде 9, 2020, 9:28 Т.Қ.
          • Жауап шешім ретінде белгіленді.

          Как то это все усложняет. Еще вероятно работает так:

          void v(xxx *x3){
           x2=x3;
          }
          

            Пікірлер

            Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
            Кіріңіз немесе Тіркеліңіз