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

подставить неизвестный класс в функцию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужно исправить ошибку http://www.cyberforum.ru/cpp-beginners/thread133195.html
Здравствуйте уважаемые форумчане. Не молчите пожалуйста, ответьте хоть кто-нибудь. Сколько писал никто не отвечает. Может потому что вопросы слишком простые, но все же хоть что-то ответьте. Нужно подправить следующий код: #include "stdafx.h" #include "iostream" #include "math.h" #include "conio.h" using namespace std;
C++ Указатели Написать функцию, в которой в качестве параметра принимается указатель массив. Отсортировать элементы массива по возрастанию и вывести на экран. http://www.cyberforum.ru/cpp-beginners/thread133186.html
работа с файлами C++
Написать программу, которая выводит на экран содержимое текстового файла
C++ Печать матрицы
Есть разреженная матрица, которая считывается из файла в цепочку ненулевых элементов и вектор указывающий на индекс начало новой строки в цепочке. Считать я считал без проблем, а с печатью проблемы. Помогите пожалуйста, вот код #include <stdio.h> #include <stdlib.h> char data; int input_matrix; int A_matrix;
C++ C or C++ http://www.cyberforum.ru/cpp-beginners/thread133173.html
На плоскости даны 20 точек (x1,y1),(x2,y2)....(x20,y20). Рассмотрим прямоугольники, содержащие эти точки, причем стороны прямоугольников параллельны или перпендикулярны координаты противоположных углов такого прямоугольника левого нижнего и правого верхнего.
C++ поиск в ширину Помогите объяснить это по русски каждую строчку что тут написнао . #include <cstdio> #include <vector> #include <stack.h> #include <queue> #include <list> using namespace std; struct Ver { int v, w; подробнее

Показать сообщение отдельно
nec
 Аватар для nec
14 / 14 / 2
Регистрация: 19.05.2010
Сообщений: 41
21.05.2010, 15:50     подставить неизвестный класс в функцию
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <iostream>
#include <string>
 
using namespace std;
 
class Human
{
   public:
      virtual void hit_the_enemy(Human &enemy);
      string get_name() { return human_name; };
      Human(string name);
 
   protected:
      string human_name;
};
 
class Paladin : public Human
{
   public:
      virtual void hit_the_enemy(Human &enemy);
      Paladin(string name);
 
};
 
class Mage : public Human
{
   public:
      virtual void hit_the_enemy(Human &enemy);
      Mage(string name);
 
};
 
 
Human::Human(string name): human_name(name)
{
}
 
 
Paladin::Paladin(string name): Human(name)
{
}
 
 
Mage::Mage(string name): Human(name)
{
}
 
void Human::hit_the_enemy(Human &enemy)
{
   cout << "human " << human_name.c_str() << " hits " << enemy.get_name() << endl;
   return;
}
 
void Paladin::hit_the_enemy(Human &enemy)
{
   cout << "paladin " << human_name.c_str() << " prays for " << enemy.get_name() << endl;
   return;
}
 
void Mage::hit_the_enemy(Human &enemy)
{
   cout << "mage " << human_name.c_str() << " booms " << enemy.get_name() << endl;
   return;
}
 
void battle(Human &human, Human &enemy)
{
   human.hit_the_enemy(enemy);
   enemy.hit_the_enemy(human);
   cout << endl;
   return;
}
 
int main(int argc, char **argv)
{
   Human h("Pit");
   Paladin p("Roger");
   Mage m("Elph");
 
   battle(h, p);
   battle(p, m);
   battle(m, h);
 
   return 0;
}
Смысл в том, чтобы у класса-родителя объявить замещаемые методы виртуальными.
Тогда при смене типа указателя данные о выполняемых методах не потеряются.

http://ru.wikipedia.org/wiki/%D0%92%...82%D0%BE%D0%B4
 
Текущее время: 17:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru