0 / 0 / 0
Регистрация: 20.03.2019
Сообщений: 68
1

Конструкторы для класса и методы GET\SET для переменных

05.08.2021, 09:09. Показов 1743. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет, прошу вашей помощи помочь разобраться, есть задание:

1)Создайте шаблон класса (с двумя параметрами), отвечающий за хранение оружие в левой руке и в правой. Типы оружия как раз и должны быть шаблонами.
2)Сделайте конструктор для данного класса, а также GET и SET методы для обоих переменных.
3) Проверьте работу шаблона (конструктора и методов), передав и тип оружия, и просто целый тип данных (например, это могут быть id оружия из какой-нибудь базы данных).


Не могу понять. Что я делаю не так? Возможно есть более простое решение? Не получается создать get b set функции. Честно я не понимаю как передать в шаблон разные объекты класса оружие. Есть же несколько переопределений. То как я написал почему-то не работает.
Сама программа если убрать шаблоны работает.

Весь мой код:

weapon.h
Кликните здесь для просмотра всего текста

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
#pragma once
#include <iostream>
using std::string;
class weapon
{
        friend class  Characteristic;
 
private:
        string name;
        float damage;
        float weight;
        float Maxweight;
 
public:
 
        weapon(string name, float damage, float weihft, float Maxweight);
        weapon();
 
        bool can(float weihft, float Maxweight);
 
        double summ1(weapon& m);
 
        double summ1(double _weight);
 
        string getName();
        float getDamage();
        float getWeight();
        float getMaxweight();
 
        void  setDamage(float damage);
 
 
};


weapon.cpp
Кликните здесь для просмотра всего текста

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
#include "weapon.h"
weapon::weapon(string name, float damage, float weihft, float Maxweight) {
        this->name = name;
        this->damage = damage;
        this->weight = weihft;
        this->Maxweight = Maxweight;
}
weapon::weapon() : weapon("Death", 1, 1, 2) {}
 
bool weapon::can(float weihft, float Maxweight) {
        if (weihft <= Maxweight) {
                return true;
        }
        else
        {
                return false;
        }
}
 
double weapon::summ1(weapon& m) {
        return summ1(m.weight);
}
 
double weapon::summ1(double _weight) {
        return _weight + weight;
}
 
string weapon::getName()
{
        return name;
}
 
float weapon::getDamage()
{
        return damage;
}
 
float weapon::getWeight()
{
        return weight;
}
 
float weapon::getMaxweight()
{
        return Maxweight;
}
 
void weapon::setDamage(float damage)
{
        if (damage >= 0) this->damage = damage;
        else std::cout << "Warning: < 0 " << std::endl;
}


MagicWeapon.h
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma once
#include "weapon.h"
class MagicWeapon :
    public weapon
{
private:
    float DamagMagic;
 
public:
    MagicWeapon(string name, float damage, float weihft, float Maxweight, float DamagMagic);
    MagicWeapon();
    float GetDamagMagic();
    float AllDamage(MagicWeapon& m);
 
 
 
 
};

MagicWeapon.cpp
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "MagicWeapon.h"
 
MagicWeapon::MagicWeapon(string name, float damage, float weihft, float Maxweight, float DamagMagic) : weapon(name, damage, weihft, Maxweight)
{
        this->DamagMagic = DamagMagic;
}
 
MagicWeapon::MagicWeapon() : MagicWeapon("MagicWeapon",20,2,2,30) {}
 
float MagicWeapon::GetDamagMagic()
{
        return DamagMagic;
}
 
float MagicWeapon::AllDamage(MagicWeapon& m)
{
        return ((m.getDamage())+(m.GetDamagMagic()));
}

main.cpp
Кликните здесь для просмотра всего текста

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
#include "weapon.h"
#include "MagicWeapon.h"
 
 
template <class WEAP, bool righthand = true>
class Player {
private:
        WEAP a;
public:
        Player() = default;
 
        bool GetHand() {
                return righthand;
        }
         
};
 
int main()
{
        weapon a;
        std::cout << a.getName() << " " << a.getDamage() << " " << a.getWeight() << std::endl;
        std::cout << a.can(2, 1) << std::endl;
 
        a.setDamage(-10);
        std::cout << a.getDamage() << std::endl;
 
        std::cout << "--------------------" << std::endl;
 
        a.setDamage(4);
        std::cout << a.getDamage() << std::endl;
 
        std::cout << "--------------------" << std::endl;
 
        weapon life = weapon("life", 15, 7, 8);
        std::cout << life.getName() << " " << life.getDamage() << " " << life.getWeight() << std::endl;
        std::cout << life.can(7, 8) << std::endl;
 
        std::cout << "--------------------" << std::endl;
 
        std::cout << a.summ1(life) << std::endl;
        std::cout << life.summ1(a) << std::endl;
        std::cout << a.summ1(life) << std::endl;
        std::cout << life.summ1(a) << std::endl;
 
        weapon li = weapon("li", 15, 7, 8);
        std::cout << li.summ1(life) << std::endl;
 
        std::cout << "--------------------" << std::endl;
 
        MagicWeapon m;
        std::cout << m.getName() << std::endl;
 
        std::cout << "--------------------" << std::endl;
 
        MagicWeapon m2("Dragon", 20, 5, 2, 40);
        std::cout << m2.GetDamagMagic() << std::endl;
        std::cout << m2.getName() << " " << m2.getDamage() << " " << m2.getWeight() << " " << m2.getMaxweight() << " " << m2.GetDamagMagic() << std::endl;
        std::cout << m2.AllDamage(m2) << std::endl;
 
        std::cout << "--------------------" << std::endl;
 
        weapon a1;
        std::cout << a1.getName() << " " << a1.getDamage() << " " << a1.getWeight() << " " << a1.getMaxweight() <<std::endl;
 
        std::cout << "-------------------------------------------------------------------------------------------------------" << std::endl;
         
        Player<MagicWeapon,1> p1;
        std::cout<<p1.GetHand()<<std::endl;
 
        Player<MagicWeapon, 0> p2;
        std::cout << p2.GetHand() << std::endl;
 
        Player<MagicWeapon, true> p3;
        std::cout << p3.GetHand() << std::endl;
 
        Player<MagicWeapon, false> p4;
        std::cout << p4.GetHand() << std::endl;
 
        std::cout << "-------------------------------------------------------------------------------------------------------" << std::endl;
 
 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.08.2021, 09:09
Ответы с готовыми решениями:

Методы get и set для объектов базового класса
class B:A { B():base(){} public A a; public A aA //нужно определить...

Реализовать методы get и set для всех параметров класса
Написать код(сегодня дедлайн) Не понимаю как это реализовать, и написал сюда, надеюсь вы поможете...

Написать методы insert и remove для класса "Set"
Всем доброго времени суток! Пытаюсь сделать одно задание, в котором нужно написать класс под уже...

Разработать классы для описанных ниже объектов. Включить в класс методы set (…), get (…), show (…). Определить другие методы
Разработать классы для описанных ниже объектов. Включить в класс методы set (…), get (…), show (…)....

2
0 / 0 / 0
Регистрация: 20.03.2019
Сообщений: 68
06.08.2021, 08:52  [ТС] 2
Нет идей ни у кого?
0
фрилансер
5497 / 5093 / 1047
Регистрация: 11.10.2019
Сообщений: 13,329
06.08.2021, 08:56 3
Лучший ответ Сообщение было отмечено Bigthanks как решение

Решение

Цитата Сообщение от Bigthanks Посмотреть сообщение
Типы оружия как раз и должны быть шаблонами.
тип оружия нужно делать шаблоном, а у тебя игрок - шаблон

и какие туда два параметра передать - хз. Напрашивается только один

C++
1
enum class e_hand{left,right,};
Добавлено через 58 секунд
соответственно, разносить код оружия по двум файлам не нужно, раз это будет шаблон
1
06.08.2021, 08:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2021, 08:56
Помогаю со студенческими работами здесь

Методы и конструкторы класса
Добрый день) Предположим, имеется некоторый класс &quot;Tfunction&quot; представляющий математическую...

Методы класса. Конструкторы. Операторы класса
namespace ConsoleApp { class bilet { public DateTime Time1; public...

Класс для работы с дробью, используя методы и конструкторы
Создать класс для работы с рациональным числом (дробью), разработав следующие элементы класса: ...

Конструкторы и методы системного класса Integer
Здравствуйте, помогите пожалуйста какие существуют методы класса Integer и есть какие нибудь...

Методы set и get для private методов
Привет Есть задача: &quot;Сделайте закрытый метод printlog(), в котором с помощью функции print()...

Создать конструкторы для класса
Уважаемые форумчане! Нужна помощь с реализацией конструкторов для класса. Заранее спасибо за любую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru