Я создал класс списка как средство замены вариативных функций в моей программе, используемых для инициализации объектов, которые должны содержать изменяющийся список элементов. Класс списка имеет синтаксис использования, который мне очень нравится. Однако я не видел, чтобы его использовали раньше, поэтому мне было интересно, не следует ли мне использовать его только из-за этого факта? Базовая реализация класса списка выглядит так ...
#include
#include
template
struct list
{
std::list items;
list(const list&ref):items(ref.items){}
list(){}
list(T var){items.push_back(var);}
list& operator,(list add_){
items.insert(items.end(),add_.items.begin(), add_.items.end());
return *this;
}
list& operator=(list add_){
items.clear();
items.insert(items.end(),add_.items.begin(), add_.items.end());
return *this;
}
list& operator+=(list add_){
items.insert(items.end(),add_.items.begin(), add_.items.end());
return *this;
}
};
Это позволяет мне использовать это в коде вот так ...
struct music{
//...
};
struct music_playlist{
list queue;
//...
};
int main (int argc, const char * argv[])
{
music_playlist playlist;
music song1;
music song2;
music song3;
music song4;
playlist.queue = song1,song2; // The queue now contains song1 and song2
playlist.queue+= song1,song3,song4; //The queue now contains two song1s and song2-4
playlist.queue = song2; //the queue now only contains song2
return 0;
}
Я действительно думаю, что синтаксис намного лучше, чем если бы я просто предоставил обычный контейнер stl и даже лучше (и безопаснее), чем вариативные функции. Однако, поскольку я не видел, чтобы этот синтаксис использовался, мне интересно, следует ли мне его избегать, потому что, прежде всего, код должен быть легко понят другим программистам?
РЕДАКТИРОВАТЬ:
Вместе с этим вопросом у меня есть разместил этот вопрос , более ориентированный на решения актуальной проблемы.