Witam , czy jest jakiś sposób na to by te wskaźniki zamieniły się adresami na które wskazują ?
Oczywiście. Po prostu adresy na które wskazują pobierasz niewłaściwie.
#include <iostream>
#include <memory>
using namespace std;
int main() {
int a = 60;
shared_ptr<int> b(new int(50));
shared_ptr<int> c = nullptr;
cout << b.get() << endl;
cout << c.get() << endl;
swap(b, c);
cout << b.get() << endl;
cout << c.get() << endl;
return 0;
}
Obiekt klasy std::shared_ptr trzyma wskaźnik. To są jego dane. Funkcja std::swap(...) posiada specjalizację dla std::shared_ptr i wymienia wyłącznie wewnętrzne dane obu obiektów (a więc wskaźniki na obiekt którym opiekuje się std::shared_ptr).