Возвращает ссылку на структуру из метода

#c

#c #c

Вопрос:

У меня есть структура A . У меня есть класс B .

В моей основной функции я создаю экземпляр B и присваиваю TEST свойству структуры значение "ABC" .

Затем я создаю локальную структуру и передаю ее в качестве ссылки outA .

Затем, когда я пытаюсь присвоить TEST свойству значение быть "123" , я ожидаю, что свойство исходного экземпляра b также будет изменено, но где-то, похоже, оно создало копию структуры.

Как мне убедиться, что я изменяю экземпляр B A структуры?

https://onlinegdb.com/BJ0V4vR5V

 #include <iostream>

using namespace std;

struct A
{
    std::string TEST;
};

class B
{
public:
    A a;

    void GetA(Aamp; outA)
    {
        outA = a;
    }
};

int main()
{
    B* b = new B();
    b->a.TEST = "ABC";

    A refToA;
    b->GetA(refToA);

    refToA.TEST = "123";

    cout << b->a.TEST;

    return 0;
}
  

Фактический контекст моей проблемы более глубок, но я думаю, что это именно та проблема, с которой я сталкиваюсь.

Комментарии:

1. Голосование за закрытие из-за опечатки. A a = b->GetA(); создает копию. Вам нужно Aamp; a = b->GetA(); иметь ссылку.

2. @NathanOliver — Большое вам спасибо. Я понимаю, что мой вопрос не совсем попал в цель. Я немного изменил текст, чтобы учесть существующую у меня проблему. Спасибо

3. Вы все еще делаете копию. refToA это не ссылка, поэтому это его собственный объект, и любые изменения, внесенные в него, изолированы от него.

4. Но как мне создать ссылку? Синтаксис A amp; refToA не кажется правильным, поскольку он нуждается в инициализации. (Я думаю, что в данном случае вопрос заключается в том, каков правильный синтаксис для этого). Спасибо за помощь, кстати.

5. Правильно. Это называется разыменованием указателя.