Ok, так что я борюсь со следующим:Возвращайтесь различные типы из C++ функций
У меня есть класс (A
), который держит vector<B>
(вектор для Qt) некоторых других классов (B
). Класс B
имеет свойство, скажем p
, а также имеет имя.
В одном случае, я хотел бы получить распечатку B
объектов, которые можно найти в классе A
, которые имеют множество p
собственности, и для другого случая я хотел бы получить список фамилий B
объекты, которые имеют свойство.
И больше всего, я хотел бы, чтобы эти две функции можно назвать то же самое :)
Так, что-то вроде:
class A
{
public:
QVector<B*> B_s_with_p() { ... }
QStringList B_s_with_p() { ... }
};
, но я не хочу иметь помощника параметр, чтобы перегрузить методы (да, это было бы легко), а ближайший я получил метод с другим именем ... которое работает, но оно уродливо. Шаблоны, похоже, тоже не работают.
Есть ли способ использовать todays 'C++ для его достижения?
Вместо того, чтобы возвращаться по значению, почему бы не передать аргумент по ссылке для заполнения? – hmjd
Зачем вам две функции, которые делают разные вещи с тем же именем? –
Возможный дубликат [Почему функции не могут быть перегружены с помощью типа возврата?] (Http://stackoverflow.com/questions/4331837/why-cant-functions-be-overloaded-by-return-type) с некоторыми обходными способами [ здесь] (http://stackoverflow.com/questions/226144/overload-ac-function-according-to-the-return-value), хотя я бы не рекомендовал его. –