Предположим, у меня есть простое struct
:
struct S {
int index;
const std::vector<int>& vec;
};
Я хочу написать симпатичный принтер для GDB, который бы отображал vec[index]
для объекта типа S
.
Вот как я это делаю сейчас:
class SPrinter:
def __init__(self, name, val):
self.val = val
def to_string(self):
i = int(self.val['index'])
ptr = self.val['vec']['_M_impl']['_M_start'] + i
return str(ptr.dereference())
Есть ли более простой способ получить доступ к данному элементу std::vector
?Можно ли позвонить operator[]
(в GDB я могу сделать p s.vec[0]
и получить то, что хочу)?Я бы хотел, чтобы мой принтер не зависел от конкретной реализации std::vector
.