Каковы некоторые законные и/или интересные применения для выполнения указателя-арифметики на «этом» указателе на C++, если таковые имеются?Арифметика указателя на указателе «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