После попытки облегчить доступ к классу хранения, я оказался в ситуации, в которой у меня мало знаний. И найти людей, которые пытаются сделать то же самое, что и я, непросто.Шаблон оператора подстрочного индекса массива C++
То, что я пытаюсь сделать, имеет класс, который хранит массив значений как строки внутри, но допускает простое отбрасывание типов с конца пользователя. То, что я планировал сделать, это использовать оператор индекса массива для возврата того типа, который они задают с помощью шаблона. Хотя, это звучит намного лучше, чем на практике. Вот простой пример того, что я делаю, чтобы дать вам представление о том, как это должно работы.
class StringList
{
public:
template <typename T>
T operator[](const int i)
}
Оттуда я бы определил несколько конкретных шаблонов, и любой пользователь мог бы очень легко определить больше, если потребуется. Но самая большая проблема заключается в том, что я не знаю, как вызвать оператор индекса с шаблоном. Сначала я предположил следующее (что, по-видимому, неверно), учитывая, что это похоже на стандартный способ вызова метода шаблона.
StringList list;
T var = list<T>[0];
Кто-нибудь знает правильный способ вызова оператора индекса в качестве шаблона? Или я должен просто избегать этого и использовать именованный метод?
Я бы предостерег от перегрузки 'operator []' для этой цели, поскольку перегруженные операторы лучше всего использовать, когда они синтаксически значимы. Обычно вы не пишете «list [0]», и я думаю, что дополнительные интеллектуальные накладные расходы не стоят того. Почему бы не просто создать шаблон 'get' и вызвать' list.get (0) '? –
templatetypedef
@templatetypedef Я полностью согласен. Я, скорее всего, собираюсь просто придерживаться именованной функции, например get, учитывая, что даже не понимаю, как вы напишете такой шаблон. Но мне любопытно узнать, как это будет написано, независимо от того, нужно ли мне когда-либо использовать его. – TheCodeBroski