Михаиллл
9 июля 2020 г. 19:50

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

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

  1. xxx *x1 = new xxx();

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

  1. xxx *x2

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

  1. void v(xxx *x3){
  2. x2=x3;
  3. }
  4.  
  5. void v(xxx *x3){
  6. *x2=*x3;
  7. }
2

Вам это нравится? Поделитесь в социальных сетях!

5
Михаиллл
  • 9 июля 2020 г. 20:42

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

  1. void v(xxx &x3){
  2. x2=&x3;
  3. }
    ДК
    • 9 июля 2020 г. 20:59

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

    1. SomeClass *cl1 = nullptr;
    2. SomeClass *cl2 = new SomeClass(this);
    3.  
    4. cl1 = cl2;

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

      Михаиллл
      • 9 июля 2020 г. 21:05

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

        ДК
        • 9 июля 2020 г. 21:13
        • (ред.)

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

        1. class Class1
        2. {
        3. public:
        4. explicit Class1(){
        5. _cl2 = new Class2;
        6. }
        7. void someFooGeneral(){ _cl2->SomeFoo(); }
        8. private:
        9. class Class2{
        10. public:
        11. void SomeFoo(){}
        12. };
        13. Class2 *_cl2;
        14. };
          Михаиллл
          • 9 июля 2020 г. 21:28
          • Ответ был помечен как решение.

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

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

            Комментарии

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