これが私が達成しようとしていることです:
#include <iostream>
using std::cout;
#include <vector>
using std::vector;
int main()
{
vector<int> a {3, 7};
int *p = &a.at (0); //assign 3
for (int i = 0; i < 10; ++i) //swap and print (3,7,3...)
{
p = (*p == a.at (0) ? &a.at (1) : &a.at (0));
cout << *p << '\n';
}
}
生のポインターの代わりにスマートポインターを使用したいのですが、それらがはるかに優れていることを確認していますが、前後の切り替えを実装する方法を実際には理解できません (これは、ゲームで交代するために使用されます。Player *
)。
std::unique_ptr
ここのポインターをとstd::shared_ptr
の 2 つの別々のテストで置き換えてみました。reset
スイッチを使用して、最初のポインターの後に乱数を与えました。
次に、std::weak_ptr
インターフェイスはそれほど似ていませんが、必要なもののように見えるので試してみました。私が見てきたことから、それを使用する唯一の方法は を使用することであるため、 の呼び出しの先頭に追加して逆参照に追加lock()
しようとしましたが、クラッシュしました。lock().
reset
生のポインターの代わりにどのように使用できstd::weak_ptr
ますか、または実際に他のポインターのいずれかを使用できますか?