std::unique_ptr
함수에를 어떻게 전달할 수 있습니까? 다음과 같은 수업이 있다고 가정 해 보겠습니다.
class A
{
public:
A(int val)
{
_val = val;
}
int GetVal() { return _val; }
private:
int _val;
};
다음은 컴파일되지 않습니다.
void MyFunc(unique_ptr<A> arg)
{
cout << arg->GetVal() << endl;
}
int main(int argc, char* argv[])
{
unique_ptr<A> ptr = unique_ptr<A>(new A(1234));
MyFunc(ptr);
return 0;
}
std::unique_ptr
함수에를 전달할 수없는 이유는 무엇 입니까? 확실히 이것이 구조의 주요 목적입니까? 또는 C ++위원회는 원시 C 스타일 포인터로 돌아가서 다음과 같이 전달하도록 의도 했습니까?
MyFunc(&(*ptr));
그리고 가장 이상하게도 이것이 통과하는 데 적합한 방법 인 이유는 무엇입니까? 끔찍하게 일관성이 없어 보입니다.
MyFunc(unique_ptr<A>(new A(1234)));