I don't understand what's wrong.

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
134
#include <iostream>
#include <cstdlib>
#include <string.h>
#include <list>

using namespace std;


class Item
{
    private:
    int weight;
    string name;

      public:

        Item(){}
        Item(int _weight, string _name): weight(_weight), name(_name){}

        int get_weight()
        {
            return weight;
        }

        string get_name()
        {
                return name;
        }


};


class Weapon : public Item
{
    private:
    int damage;   // for( damage - "Monstrets hp")
   /* int weaponspeed; */
    int range;   // 1-10 i range använd if sats

    public:

        Weapon(int _weight, string _name, int _damage, /*int _weaponspeed,*/ int _range)
            : damage(_damage), /*weaponspeed(_weaponspeed),*/ range(_range), Item(_weight, _name){}



            int get_damage()
            {
                return damage;
            }

            int get_range()
            {
                return range;
            }

};

class Shooter : public Weapon
{
    private:
    int clipsize;
   /* int reloadtime; */
    int ammunition;

    public:

        Shooter(int _weight, string _name, int _damage, /*int _weaponspeed,*/ int _range, int _clipsize, /*int _reloadtime,*/ int _ammunition)
            : clipsize(_clipsize), /*reloadtime(_reloadtime),*/ ammunition(_ammunition), Weapon(_weight, _name, _damage,/* _weaponspeed,*/ _range){}

        int get_clipsize()
        {
            return clipsize;
        }

        int get_ammunition()
        {
            return ammunition;
        }


};

class SkapaVapen : public Shooter // Namn = Magnum
{
    public:

        SkapaVapen(int _weight, string _name, int _damage, /*int _weaponspeed,*/ int _range, int _clipsize, /*int _reloadtime,*/ int _ammunition)
         : Shooter(_weight, _name, _damage, /*_weaponspeed,*/ _range, _clipsize, /*_reloadtime,*/ _ammunition){}


void skrivut()
{

    cout<<"Name: "<<get_name()<<endl<<"Weight: "<<get_weight()<<endl<<"Damage: "<<get_damage()<<endl<<"Range: "<<get_range()
    <<endl<<"Clipsize: "<<get_clipsize()<<endl<<"Ammunition: "<<get_ammunition()<<endl;
    cout << endl;
}



};

class Backpack
{
    public:
   list<SkapaVapen>packback;

   void flyttaBak(SkapaVapen * SMG)
   {
       packback.push_back(SMG);
   }

   void flyttaFram(SkapaVapen *Pistol)
   {
        packback.push_front(Pistol);
   }
};

int main()
{
// Vapen
SkapaVapen Pistol(2, "Magnum", 8, 5, 6, 15);
SkapaVapen SMG(4, "K-pist", 3, 6, 70, 100);

// Item
Item apple(1, "Apple");

Backpack b;
b.flyttaFram();

    return 0;
}


Anyone knows what's wrong with this code?
The problem is here:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Backpack
{
    public:
   list<SkapaVapen>packback;

   void flyttaBak(SkapaVapen * SMG)
   {
       packback.push_back(SMG);
   }

   void flyttaFram(SkapaVapen *Pistol)
   {
        packback.push_front(Pistol);
   }
};
Last edited on
You try to put a
SkapaVapen*
into a
std::list<SkapaVapen>.

The Types differ.
Try to do packback.push_back(*SMG);
Yes I did try your idea Aikon it works but instead I get this



"" expected initializer before '.' token ""

From here:

1
2
Backpack b;
b.flyttaBak();
your use:

void flyttaFram(SkapaVapen *Pistol);

Try to declarete the Pistol ( in main ) to the heap, using new.

Or maybe as:

void flyttaFram(const SkapaVapen& Pistol);
Last edited on
Topic archived. No new replies allowed.