0
"->"오버로드 예제를 얻으려고합니다. 자습서에 따라 서명은 a -> b를 반영하는 A :: operator ->()입니다.연산자 -> 오버로드 예제
기능이 어떤 멤버를 조작해야하는지 어떻게 식별합니까?
나는 클래스, 객체 또는 참조에 대한 포인터를 반환 할 수 있다고 가정합니다. 이에 대한주의 사항은 무엇입니까? 스마트 포인터 속성 등의 처리.
"->"오버로드 예제를 얻으려고합니다. 자습서에 따라 서명은 a -> b를 반영하는 A :: operator ->()입니다.연산자 -> 오버로드 예제
기능이 어떤 멤버를 조작해야하는지 어떻게 식별합니까?
나는 클래스, 객체 또는 참조에 대한 포인터를 반환 할 수 있다고 가정합니다. 이에 대한주의 사항은 무엇입니까? 스마트 포인터 속성 등의 처리.
template<class T>
class PointerObject
{
public:
PointerObject(T* p)
: _p(p)
{}
T* operator ->()
{
return _p;
}
private:
T* _p;
};
struct A
{
int x, y;
};
int main()
{
A a;
PointerObject<A> po(&a);
po->x = 1;
po->y = 1;
}
마지막 단락을보다 정확하게 사용할 수 있습니까? – Brian
'operator ->()'구현은 어떤 멤버가 조작되고 있는지 상관하지 않습니다. 그냥'T *'를 반환 할 것이고'T'가 b라는 멤버를 포함하면 코드는 컴파일 될 것입니다. – Praetorian