Можно ли явно указать тип возврата для перегруженного operator[]
?Как указать тип возврата для оператора []?
К примеру, у меня есть экземпляр объекта с перегруженным оператором []
, и если я использую instance["num"]
, я хотел бы, чтобы вернуть int
и instance["flt"]
float
(там уже типа логики обработки), как это:
int some_value = instance["amount_of_entries"];
float other_value = instance["percentage"];
Я попытался это:
class someClass {
template<class T> T& operator[](char* index){ ... }
};
int val = instance["int_value"];
Но я получаю сообщение об ошибке:
error C2783: 'T &CSettings::operator [](char*)' : could not deduce template argument for 'T'
Я думал об использовании instance<int>["int_value"]
, но это синтаксическая ошибка и не компилируется.
Нет. Почему бы не использовать функции-члены: 'int amountOfEntries()' и 'float percent()'? Это был бы C++ способ сделать это. – quantdev
@quantdev: потому что 'get'-префиксы являются подробными и контрпродуктивными в C++? getin, как я говорю. –
@ Cheersandhth.-Alf Это ваше мнение (я переименовал), так или иначе назовите функции, как вы пожелаете. – quantdev