Я пишу библиотеку с объектом очереди (не std :: queue и не используется в качестве контейнера C ++). В этой очереди мы можем включить команды с аргументами. Допустим, командами являются foo , bar и baz , и что каждый из Bar и Baz принимает параметр int .
Теперь эти команды и не функции моей библиотеки, то есть вы не можете выпустить команду C ++ (123); есть методы: < /p>
Код: Выделить всё
class queue_t {
// ...
public:
void enqueue_foo();
void enqueue_bar(int x);
void enqueue_baz(int y);
};
< /code>
И мне не нравится избыточный префикс. Дело в том, что по причинам, имена методов queue_t :: foo ()
, queue_t :: bar () и queue_t :: baz () не будет целесообразно, и не будет запутать пользователя, чтобы поверить, что эти действия применяются к очереди, а не планируются на определение выполнения. Кроме того, foo , bar и baz не должны находиться в глобальном пространстве имен или в одном и том же пространстве имен, что и queue_t , как это приведет к другим видам путаницы. /> Обратите внимание, что если бы я создал «гаджеты» с именем foo , bar и baz , я мог бы принять общий метод enqueue () , который принимает гаджет в качестве первого аргумента Один, и это не то, что я хочу.
Примечание: решение C ++ 11 предпочтительнее, но ответы, требующие более новых языковых версий, приемлемы.
Подробнее здесь:
https://stackoverflow.com/questions/796 ... ame-prefix