Михаиллл
09 липня 2020 р. 19:50

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

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

 xxx *x1 = new xxx();

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

xxx *x2

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

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

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

Вам це подобається? Поділіться в соціальних мережах!

5
Михаиллл
  • 09 липня 2020 р. 20:42

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

void v(xxx &x3){
 x2=&x3;
}
    ДК
    • 09 липня 2020 р. 20:59

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

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

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

      Михаиллл
      • 09 липня 2020 р. 21:05

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

        ДК
        • 09 липня 2020 р. 21:13
        • (відредаговано)

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

        class Class1
        {
        public:
            explicit Class1(){
                _cl2 = new Class2;
            }
            void someFooGeneral(){ _cl2->SomeFoo(); }
        private:
            class Class2{
            public:
                void SomeFoo(){}
            };
            Class2 *_cl2;
        };
        
          Михаиллл
          • 09 липня 2020 р. 21:28
          • Відповідь була позначена як рішення.

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

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

            Коментарі

            Only authorized users can post comments.
            Please, Log in or Sign up