C ++에서 포인터를 참조로 캐스트 / 변환하는 방법


143

Object *ob프로토 타입이 어떤 함수에 포인터 ( )를 전달할 수 void foo(Object &)있습니까?


제목에 "cast [sic] reference to pointer"라고 나와 있지만 질문은 포인터로 시작하며 참조가 필요합니다. 어느 방향입니까?
MSalters

@MSalters 변환 해야합니다 . 편집 중입니다. 그러나 나는 어떤 솔루션을 찾고 있었기 때문에 캐스트를
Dewsworld

답변:


209

다음과 같이 호출하십시오.

foo(*ob);

질문 제목에 제안 된대로 전송이 진행되지 않습니다. 우리가 한 일은 객체에 대한 포인터를 역 참조한 다음 함수에 전달하는 것입니다.


25
@Ricobob 그렇게 자주 일어나는 일입니다. 쉽게 이해할 수있는 간단한 질문에 대한 대답은 종종 많은 투표를 얻습니다. 까다로운 질문에 대한 길고 복잡한 답변은 유권자들이 장점을 쉽게 판단 할 수 없기 때문에 공감대가 거의없는 경우가 많습니다. 담당자는 담당자 모자로 인해 아무것도 얻지 못했습니다. ;-) 그러나 나는 진심으로 동의합니다. 복잡한 답변이 더 많은 담당자를 얻길 바랍니다.
David Heffernan

@DavidHeffernan 그렇습니다. 누군가 문제를 제기하지 않았다면 MetaSO에 문제가있는 것 같습니다.
Ricibob

4
이것은의 사본을 만들 ob거나 포인터를 참조로 변환 (캐스트하지 않은 경우)합니까? 만약에 ob있었다 nullptr?
Drew Noakes

5
@Drew 단순히 포인터를 역 참조합니다. 사본이 없습니다. 전환이 없습니다. 캐스트가 없습니다. 그런 다음 객체는 함수를 참조하여 전달됩니다. 포인트가 널이면 오류입니다.
David Heffernan


41
foo(*ob);

동일한 객체 유형이므로 캐스팅 할 필요가 없으며 역 참조하면됩니다.


많은 것을 추가하는 amd를 추측하는 것이 일반적으로 여기에 좋은 대답의 형식은 아닙니다 (이 경우에는 정확하지만).
KillianDS

5
bhhaaa, 나는 적어도 30 문자를 쓸 수 있기 때문에 "추측"을 추가했습니다. 그것은 또한 "..........."를 추가하는 방법입니다
Roee Gavirel

10
@RoeeGavirel 나는 downvote가 가혹하다고 느꼈기 때문에 첫 번째 투표권 자입니다. FWIW 당신은 ​​30 자 제한을 초과 할 수 있지만 HTML 주석 <! -----------------------------> 추가 대답의 첫 번째 버전! 귀하의 답변을 편집하면 방법이 표시됩니다.
David Heffernan

요즘에는 설명이없는 코드 전용 답변이 눈살을 찌푸립니다.
Keith M

1
@KeithM-그것은 임의의 의견이며 -1입니다. 그 대답은 약 6 년 전에 주어졌으며, 또한 그 질문은 단지 "어떻게"를 요구하는 "왜"를 요구하지 않았습니다. 그러나 확실히 설명을 추가하겠습니다.
Roee Gavirel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.