Форум программистов, компьютерный форум CyberForum.ru

Нетривиальная работа с классами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разработать программу для службы занятости. желательно по быстрее если можно) у нас экзамен выручайте братья) http://www.cyberforum.ru/cpp-beginners/thread758517.html
Разработать программу для службы занятости. Предусмотреть возможность ведения списка вакансий, содержащего следующую информацию: • Наименование организации. • Местоположение. • Требуемая квалификация и стаж работы. • Требуемый возраст кандидата. • Дополнительные требования к кандидату.
C++ Разработать программу, осуществляющую поиск самого короткого и самого длинного слова во вводимом тексте Разработать программу, осуществляющую поиск самого короткого и самого длинного слова во вводимом тексте. С комментами) http://www.cyberforum.ru/cpp-beginners/thread758515.html
C++ Определить столбец с максимальным по модулю значением этой суммы и вывести его номер на экран
В квадратной матрице размером Т*Т, имеющей имя MKA , содержаться целые числа, Т-число строк и столбцов Ввести элементы матрецы с клавиатуры. Определить и вывести на экран сумму отрицательных элементов в каждом столбце. Определить столбец с максимальным по модулю значением этой суммы и вывести его номер на экран.
Функция с 4-мя параметрами (деление, остаток от деления,.) C++
Написать функцию divide_plus с 4 параметрами (также программу, которая ее вызывает). Первые два параметра передают целые числа, 3-ий параметр возвращает целое деление первых двух чисел, 4-ый параметр возвращает остаток от деления, а возвращаемое значение функции (return) - простое деление
C++ Перекодировать из Паскаля в с++ http://www.cyberforum.ru/cpp-beginners/thread758498.html
Var a : Array Of LongInt; // массив для хранения двоичной записи k : Array Of LongInt; // двухмерный массив, первый элемент число, второй элемент количество единиц N,i,j,p,kol : longint; Begin readln(N); For i:=1 To n Do read(k); For i:=1 To n Do Begin j:=0;
C++ нужна решение задач в с++ 1) Решить задачу. Функция у=2х, если х>0, и у=х+10 в других случиях. 2) Решить задачу. Дан одномерный массив А(К). Определить сумму элементов индексы, которых кратны двум. подробнее

Показать сообщение отдельно
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.01.2013, 13:24     Нетривиальная работа с классами
Цитата Сообщение от Andreyasu Посмотреть сообщение
Проблема такая , есть классы
C++
1
2
A{ public: int a,int b}
 B { public: int c,int d}
Как мне считать в эти классы одной функцией
template <class T> read(*T) {T->первое поле класса =x, T->второе поле класса = y};
Вот я знаю что могу вернуть имя класса через typeid(B).name() , но вот имя поля ?
Если в первом случае первое поле имеет название a , а во втором c?
С++ не поддерживает какой-либо приемлемый механизм рефлексии.

Подобные проблемы чаще всего возникают там, где не удалось провести декомпозицию. Таких грязных хаков надо по-возможности избегать. Если вы приведете ваше исходное задание, можно подумать, как это сделать не прибегая к исхищрениям.

Можно сделать через специализацию шаблона, что, впрочем, мало отличается от просто перегруженной функции.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class A {
 public:
  int a, b;
};
 
class B {
 public:
  int c, d;
};
 
// реализация по-умолчанию ничего не делает
template <class T>
void read(T &value) {
}
 
// специализированная реализация для класса A
template <>
void read<A>(A &value) {
  value.a = value.b = 10;
}
 
// специализированная реализация для класса B
template <>
void read<B>(B &value) {
  value.c = value.d = 11;
}
 
int main(int argc, char *argv[]) {
  A a;
  B b;
  
  read(a);
  read(b);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru