#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. Правильно. Это называется разыменованием указателя.