class Game
{
private:
std::vector<Player> mPlayer;
std::vector<std::shared_ptr<Card>> FiveDraw;
//...//
}
여기에서 FiveDraw는 커뮤니티 카드 5장이고 그리고 플레이어들이 깔린 5장에 대해 접근하는건데 구현은 했는데 왜 FiveDraw의 참조 카운트가 안올라가는거임?
박을때 *FiveDraw[0].get() 이런식으로 넘겨있는데 이러면 안되는거?
class Game
{
private:
std::vector<Player> mPlayer;
std::vector<std::shared_ptr<Card>> FiveDraw;
//...//
}
여기에서 FiveDraw는 커뮤니티 카드 5장이고 그리고 플레이어들이 깔린 5장에 대해 접근하는건데 구현은 했는데 왜 FiveDraw의 참조 카운트가 안올라가는거임?
박을때 *FiveDraw[0].get() 이런식으로 넘겨있는데 이러면 안되는거?
너무 어렵다 머리아프고 아...
get하면 스마트포인터 안에 들어있는 생포인터 나옴
오우.... std::vector<std::shared_ptr<>> 는 최악이예요우...
ㄴ 그러면 get해버리면 참조카운트가 안올라간다는뜻?
ㄴ 그럼 어떻게해야함? 오버플로우에서는 이렇게 하라고해서 ㅠㅠ
vector 용량이 다 차서 재할당 할 때마다 std::shared_ptr 들이 레퍼런스 카운트 올라갔다가 내려갔다 해서 성능 팍팍 갉아먹음
안올라가는것도 문제인데 여러곳에서 해제할 수 있다는게 더 큰 문제
get 하면 카운트 안 올라감, 벡터에는 shared_ptr 넣으면 안됨 성능 상관 없으면 몰라도
ㄴ 그럼 가이드 좀... 걍 안쓸까 생각중..
그래서 생포인터는 보통 레퍼런스를 꼭 받아야되는 간단한 함수들에 인자로 전달할 때만 쓰지요
이게 소유권을 꼭 공유해야되는거였나? 음... 카드 최대 갯수 용량 정해져 있으니까 vector.reserve() 잘 해놓으면 문제 없지 싶기도 하고
ㄴ 음.. 그러면 버려야 것네
커헠//갯수->개수 (개수 (個數)[명사] : 한 개씩 낱으로 셀 수 있는 물건의 수효.) [리듬 맞춤법 봇♬]
오 벡터엔 shared_ptr넣으면 안 되는구낭...
이란 건 어디서 배워여?
오늘 밤까지 이부분 정리해서 올려라 나도 이부분은 이해가 잘 안가드라 ㅜ
ㄴ응?