ropriedade com uma representação físi

Depois de ler em RAII, visualizarpresentação do CppCon2014 de Herb Sutter e lendo ocore guidelines e related articles ao longo de alguns dias, ainda estou bastante confuso sobre propriedade e semântica relacionad

Digamos que as classes A e B representem entidades físicas, e há uma classe Scene e uma classe Process. A classe Process é ummain função, se quiser. No mundo real, um A pode adquirir um B e mantê-lo fisicamente para si. Também pode liberá-lo. Durante o curso de uma instância de Processo, um objeto A deve, portanto, ser capaz de ter para si uma instância B, e também liberá-lo após o término. As e Bs vivem em uma cena, que um processo deve gerencia

Também é derivado: um A usa alguma interface, enquanto uma Cena usa outra interface que um B. fornec

Vamos tentar com algum código para pelo menos o processo:

class Process
{
public:
  void run();
};

void Process::run()
{
  auto scn = Scene {};
  auto a = A {};
  auto b = B {};

  scn.add(a);  // stores a
  scn.add(b);  // stores b

  a.acquire(b);  // stores b, and represents physical possession of a B
  a.doSomething();
  a.release(b);  // sets a's B instance to null, and physically loses the B
}

Corrija-me aqui se estiver errado, esta é a parte duvidos

Pelo que entendi, A deve (em vez de gostar do código) estar na pilha e apontado de um shared_ptr, pois o Processo e a Cena têm sua própria instância de A. O mesmo aconteceria com B, que é armazenado ambos ema e emscn, e qual em processo. Por que entãoscn não sejamake_uniqued?

A outra maneira de fazer isso é ter tudo na pilha (como no trecho de código). Ambas as soluções parecem idênticas para mim, não entendo a diferença semântica dessas duas opções, mas tenderia à primeir

questionAnswers(1)

yourAnswerToTheQuestion