#c #stl
#c #stl
Вопрос:
у меня есть серия struct, я хочу добавить для них метод show .
пожалуйста, посмотрите следующий код:
A {
int a, b, c;
void Show() {
cout << a << " " << b << " " << c << endl;
}
};
B {
int a, b;
void Show() {
cout << a << " " << b << endl;
}
};
как вы можете видеть, мне нужно определить функцию show для каждой из них, но у меня много struct .
есть ли какой-либо метод, который я могу использовать, например: A a; Show(a)
, может сделать это в одном определении?
Комментарии:
1. Короткий ответ, нет. Обычно требуется реализовать одну или несколько функций вывода и ввода. Как только C получит отражение, у вас должно быть больше возможностей.
2. Нет, вы не можете. И я предлагаю вам перегрузить оператор «output»
<<
, чтобы вы могли сделать, напримерA a; /* Initialize members of a */ std::cout << a << 'n';
3. Как говорит @Someprogrammerdude, вы можете определить функцию для
A
таких, какstd::ostream amp;operator<<(std::ostream amp;out, const A amp;a) { out << a.a << " " << a.b << " " << a.c; return out; }
.4. @fanfly За исключением того, что функция должна использовать
out
вместоstd::cout
… 🙂 Кроме того, поскольку оператор возвращает поток, можно было бы сделатьreturn out << ...;
.5. @Someprogrammerdude Да, вы правы; Я ввел ошибку.
Ответ №1:
В стандартной библиотеке такого механизма нет. Для таких типов, как ваш A
и B
, вы должны иметь возможность использовать magic_get