Я пытаюсь написать классы с цепными операторами (подобно JQuery), где вместо возврата void функция возвращает объект/указатель, на который он был вызван, чтобы вы могли выполнять на нем больше функций. Например:Можете ли вы использовать макросы для создания типа «self» return?
Foo* Foo::bar(Bar value){
_bar = value;
return this;
}
Очевидно наименее хак-й способ сделать это было бы использует собственный класс объекта в качестве возвращаемого типа, как указано выше, но мне было интересно, если есть способ, чтобы сократить это с помощью макросов , Например:
self Foo::bar(Bar value){
_bar = value;
}
Макрос в основном заменит себя классом, к которому принадлежит метод, и добавляет «return this;» к концу. Это возможно? И если да, это хорошая идея, или я должен придерживаться обычного метода?
Знаете ли вы, что такое макрос? Текстовые подстановки не могут вставлять код (т. Е. 'Return this;') в любом месте, где уже нет заполнитель. –
придерживаться общего соглашения. это поможет с удобочитаемостью. –
Это, конечно, не будет хорошей идеей и приведет к довольно нечитаемому коду. Если вы чувствуете, что печатаете слишком много, получите лучший текстовый редактор. –