Я хочу сделать что-то вроде этого:C++, если-другое заявление в соиЬ
ostream& table(ostream& os, myClass& obj, bool foo1, bool foo2) {
os << (foo1 ? obj.getFoo1() : "") << (foo2 ? obj.getFoo2() : "");
return os;
}
Теперь моя главная проблема в том, что я не нужен else
заявление. Даже если я не могу использовать тернарный оператор без else
, мне нужно отправить пространство, например " "
. Я бы очень хотел использовать " "
, но мой obj.getFoo
не возвращает ни одного строкового значения (он возвращает целое число). А для целых чисел нет «пространства».
Есть ли способ получить заявление if-else
внутри cout
(очевидно, без else
)?
У меня будет 49 различных foo. Вот почему я ищу короткий путь. – user3653164
Тогда я подозреваю, что вы делаете что-то немного неправильно (или ОЧЕНЬ неправильно). Но короткая версия - добавить еще одну функцию: 'print_if_true (ostream & os, bool cond, Type вещь) {if (cond) os << вещь; }} 'и затем вызывается' print_if_true (os, foo1, obj.getFoo1()); 'и т. д. Если' obj.getFoo1() 'возвращает типы differnet, вам может потребоваться сделать шаблонную функцию. –