C++의 "this"포인터 (있는 경우)에 대해 포인터 연산을 수행하기위한 합법적 인 및/또는 흥미로운 용도는 무엇입니까?"this"포인터에 대한 포인터 연산
SE를이 질문의 길이만큼 기쁘게 만들려면 관련 코드를 포함시켜야합니다.
class Foo
{
public:
Foo(bool terminate = false)
: _data(terminate ? -1 : 0)
{}
void Bar(void)
{
if (_data >= 0)
{
_data++;
this[1].Bar();
}
}
private:
int _data;
};
void main()
{
std::vector<Foo> vec;
vec.push_back(Foo());
vec.push_back(Foo());
vec.push_back(Foo());
vec.push_back(Foo());
vec.push_back(Foo(true));
vec[2].Bar();
}
개체가 연속 배열의 멤버임을 인식해서는 안되기 때문에이 작업을 수행 할 정당한 이유는 없습니다. 그리고 당신의 코드는 무한 재귀 적입니다. –
나는이 질문에 길이가 불만의 근원이 될 것이라고 생각하지 않는다. –
스택 오버플로는 "프로그래머에게 아무것도 묻지"않습니다. 여기는 규칙이 아닙니다. – Yakk