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

Взаимодействие объектов разных классов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Boolean http://www.cyberforum.ru/cpp-beginners/thread241854.html
Не подскажите почему булеану выделяется 1 байт(8 бит) ведь достаточно только одного бита. И как тогда работать побитово?
C++ Разработать программу, реализующую многопочность средствами среды Win32 помогите пожалуйста разобраться с задачей. "Задание Разработать программу, реализующую многопочность средствами среды Win32. Программа должна обеспечивать: 1. Отображение списка запущенных потоков. 2. Создание нового потока по запросу пользователя. 3. Завершение заданного потока по запросу пользователя. 4. Завершение работы с корректным завершением всех потоков. Каждый поток работает... http://www.cyberforum.ru/cpp-beginners/thread241845.html
Класс в модуле C++
как записать класс в модуль?(ну чтобы его из модуля вызывать) например такой #include <iostream> class Myclass { private: int elem1,elem2,elem3; public: Myclass(int x,int y,int z)
Как правильно написать в С++ C++
Как правильно написать в С++ N=arctg(sin^2*x+tg^2*y) y=sin^2*(a-b)^3 ^- степень
C++ Использование вспомогательных функций http://www.cyberforum.ru/cpp-beginners/thread241781.html
Помогите найти ошибку в коде, заранее спасибо. Найти периметр треугольника, заданного координатами своих вершин. (Определить функцию для расчета длины отрезка по координатам его вершин). // laba9 zad2.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <math.h>
C++ Вычисление матричных выражений через функции Вычисление матричных выражений с помощью функций A*(B-C). написал код, компилятор ругается чёт, взгляните в чём ощибка? #include "stdafx.h" #include <iostream> #include <time.h> #include <stdlib.h> using namespace std; int Matrica (int a , int b , int c, int n) { int d; подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
13.02.2011, 13:02     Взаимодействие объектов разных классов
Цитата Сообщение от outoftime Посмотреть сообщение
Не могу с вами согласится, так как классы Игрока и Атакованого субьекта могут иметь разную структуру (поля и методы), в связи с чем мой вариант все-таки лучше.
Не согласен с вашим несогласием, так как по мнению экспертов защищенные данные – это такое же нарушение инкапсуляции, как и открытые, поэтому их следует избегать.
Ну и если вы наследуете от какого-то класса, то его деструктор нужно обязательно объявлять виртуальным.
Вот так будет логичнее:
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_name;
/////////////////////////////////////////////////////////////////////////////////////////
class T_actor
{
    T_name  name_;
    int     health_;
    int     damage_;
    //-----------------------------------------------------------------------------------
public:
    //-----------------------------------------------------------------------------------
    T_actor
        (
            T_name  name,
            int     health = 0, 
            int     damage = 0
        ) 
        : name_    (name),
          health_  (health), 
          damage_  (damage)
    {}
    //-----------------------------------------------------------------------------------
    virtual ~T_actor() {}
    //-----------------------------------------------------------------------------------
    void attack(T_actor&  destination)
    {
        destination.health_ -= damage_;
    } 
    //-----------------------------------------------------------------------------------
    virtual void  print()
    {
        std::cout << typeid(*this).name()
                  << " "
                  << name_
                  << ":"
                  << std::endl
                  << '\t'
                  << "health: "
                  << '\t'
                  << health_
                  << std::endl
                  << '\t'
                  << "damage: "
                  << '\t'
                  << damage_                  
                  << std::endl;
    }
    //-----------------------------------------------------------------------------------
    void  println()
    {
        print();
        std::cout << std::endl;
    }
};
///////////////////////////////////////////////////////////////////////////////////////// 
class  T_actor_int : public T_actor
{
    int  int_val_;
    //-----------------------------------------------------------------------------------
public:
    //-----------------------------------------------------------------------------------
    T_actor_int
        (
            T_name  name,
            int     health   = 0, 
            int     damage   = 0,
            int     int_val  = 0
        ) 
        : T_actor   (name, health, damage),         
          int_val_  (int_val)
    {}
    //-----------------------------------------------------------------------------------    
    void  print()
    {
        T_actor::print();
        std::cout << '\t'
                  << "int_val: "
                  << '\t'
                  << int_val_
                  << std::endl;
    }
};
///////////////////////////////////////////////////////////////////////////////////////// 
class  T_actor_double : public T_actor
{
    double  double_val_;
    //-----------------------------------------------------------------------------------
public:
    //-----------------------------------------------------------------------------------
    T_actor_double
        (
            T_name  name,
            int     health      = 0, 
            int     damage      = 0,
            double  double_val  = 0
        ) 
        : T_actor      (name, health, damage),         
          double_val_  (double_val)
    {}
    //-----------------------------------------------------------------------------------    
    void  print()
    {
        T_actor::print();        
        std::cout << '\t'
                  << "double_val: "
                  << '\t'
                  << double_val_
                  << std::endl;
    }
};
///////////////////////////////////////////////////////////////////////////////////////// 
int main()
{
    std::locale::global(std::locale(""));
    T_actor_int     A("A", 100, 50, -1);
    T_actor_double  B("B", 100, 30, -2);
 
    std::cout << "Состояния участников перед схваткой:"
              << std::endl;
    A.println();    
    B.println();    
 
    A.attack(B);
    B.attack(A);
 
    std::cout << "Состояния участников после схватки:"
              << std::endl;
    A.println();
    B.println();
}
 
Текущее время: 10:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru