Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.
Закрыт 1 год назад.
Пишу свою структуру данных в виде шаблона struct. В ней должен быть помимо прочего метод front() для обращения к определенному элементу.
Проблема в том, что этот метод нужен и для сравнения этого элемента с внешними (возврат значения из функции по константной ссылке) и для присвоения элементу значения (возврат из функции обычной ссылки). Я пробовал писать два метода, либо вложенную структуру которая съедает круглые скобочки и переопределяет оператор присваивания. Получалась какая-то лажа. Покажите какую-нибудь каноничную реализацию такого.
#include <cstddef>
template <typename T, std::size_t MaxElements>
struct cb{
T buffer[MaxElements];
// Тут реализация метода front() который возвращает buffer[0]
};
int main(){cb<int,7>cc;cc.front()=0;if(cc.front()==0){};return 0;};
Написать две функции-члена. Одну для const обьектов, вторую для обычных обьектов.
T& front()
{
return buffer[0];
}
const T& front() const
{
return buffer[0];
}
P.S. Не забудьте написать нужные проверки в этих функциях.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей