Если я определяю указатель на объект, который определяет оператор []
, есть ли прямой способ доступа к этому оператору из указателя?
Например, в следующем коде я могу напрямую обращаться к Vec
функциям-членам (например, empty()
) с помощью указателя ->
, но если я хочу получить доступ к оператору []
, мне нужно сначала получить ссылку на объект, а затем вызвать оператор.
#include <vector>
int main(int argc, char *argv[])
{
std::vector<int> Vec(1,1);
std::vector<int>* VecPtr = &Vec;
if(!VecPtr->empty()) // this is fine
return (*VecPtr)[0]; // is there some sort of ->[] operator I could use?
return 0;
}
Возможно, я ошибаюсь, но похоже, что (*VecPtr).empty()
менее эффективен, чем VecPtr->empty()
. Вот почему я искал альтернативу (*VecPtr)[]
.