Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

Call to implicitly-deleted copy constructor of przy wywołaniu metody push_back

$
0
0

Witam, podczas używania metody push_back kompilator zwraca błąd "Call to implicitly-deleted copy constructor of 'Monsters' memory. Poniżej podaje cały kod programu. Podobnie robię w swoim innym programie, gdzie wszystko działa ładnie ( tam nie używam class zaprzyjaźnionych, ale to chyba nie ma nic do rzeczy).

 

class Hero
{
public:
    //features
    string name;
    int strenght;
    int dexterity;
    int HP;
    int intelligence;
    int charisma;
    fstream file;

    Hero(string ,int, int, int, int, int);
    Hero();
    void showStats();
    void save();
    void load(string path);


    friend class Magus;
    friend class Warrior;
    friend class Berserker;
    friend class Thief;


};

#include <iostream>
#include <stdio.h>
#include <fstream>
#include <vector>
#include "Hero.hpp"
#include "Thief.hpp"
#include "Warrior.hpp"
#include "Magus.hpp"
#include "Berserker.hpp"
#include "Monsters.hpp"
#include "Libraries.hpp"

using namespace std;


class Engine
{
public:
    int menuChoose;

    enum EngineState {MENU,CREATE_HERO,SAVE_HERO,LOAD_HERO,CHANGE_STATS,CREATE_MONSTERS,END};
    EngineState state;

    Hero hero;
    Magus magus;
    Berserker berserker;
    Warrior warrior;
    Thief thief;
    Monsters monster;

    vector<Monsters>::const_iterator iterMonster;
    vector<Monsters> MonstersArray;


    Engine();

    int menuEngine();
    void startEngine();
    void createHero();
    void save();
    void load();
    void change_stats();
    void create_monster();
    void save_monsters();




};
//
//  Engine.cpp
//  KonstruktoryDestruktory
//
//  Created by Mac Paweł on 12.05.2017.
//  Copyright © 2017 Macbook PRO 13. All rights reserved.
//



void Engine::startEngine()
{
    while(state != END)
    {
        //program loop

        system("clear");

        switch (state)
        {
            case EngineState::MENU :
                menuEngine();
                break;

            case EngineState::CREATE_HERO :
                createHero();
                break;

            case EngineState::SAVE_HERO :
                save();

                break;

            case EngineState::LOAD_HERO :
                load();
                break;

            case EngineState::CHANGE_STATS:
                change_stats();
                break;

            case EngineState::CREATE_MONSTERS:
                //
                break;


            case EngineState::END :

                //exit
                break;

        }

    }

}


void Engine::create_monster()
{

    bool choose2 = false;
    int choose_option;
    while(state!=MENU)
    {
        hero.showStats();
        cout<<"1. Create monster "<<endl;
        cout<<"2. Save Monster "<<endl;
        cout<<"3. Back do Menu "<<endl;
        cin>>choose_option;

        //ENTER ERROR CONTROL
        if(choose_option ==1 || choose_option==2 || choose_option==3)
        {
            choose2 = false;
        }
        else choose2 = true;

        while(choose2 == true)
        {
            cout<<"Choose again! ( 1 or 2 or 3)"<<endl;
            cin>> choose_option;
            if(choose_option==1 || choose_option == 2 || choose_option==3)
            {
                choose2 = false;
            }
            else choose2 = true;
        }

        switch (choose_option)
        {
            case 1:
            {

                cout<<"Enter monsters names: ";
                cout<<"Enter Monster1 name: ";
                cin>>monster.name;
                cout<<"Monster1 name is: "<<monster.name;
                MonstersArray.push_back(monster);

                cout<<"Enter Monster2 name: ";
                cin>>monster.name;
                cout<<"Monster2 name is: "<<monster.name;
                MonstersArray.push_back(monster);
                cout<<"Enter Monster3 name: ";
                cin>>monster.name;
                cout<<"Monster3 name is: "<<monster.name;
                MonstersArray.push_back(monster);
                cout<<"Enter Monster4 name: ";
                cin>>monster.name;
                cout<<"Monster4 name is: "<<monster.name;
                MonstersArray.push_back(monster);
                cout<<"Enter Monster5 name: ";
                cin>>monster.name;
                cout<<"Monster5 name is: "<<monster.name;
                MonstersArray.push_back(monster);


                break;
            }

            case 2:
            {
                cout<<"Saving monsters to file"<<endl;
                int counterMonster = 0;
                for(iterMonster=MonstersArray.begin(); iterMonster !=MonstersArray.end(); iterMonster++)
                {

                    MonstersArray[counterMonster].save();
                    counterMonster++;
                }
                break;

            }

            case 3:
            {
                state=MENU;
                break;
            }

        }
        system("clear");

    }
}

class Monsters:public Hero { public: Monsters(); };

Monsters::Monsters()
{

    name = "";
    strenght = generateRandom(10);
    dexterity =generateRandom(10);
    HP = generateRandom(10);
    intelligence = generateRandom(10);
    charisma = generateRandom(10);

}

Problem występuje przy metodzie push_back w Engine.cpp


Viewing all articles
Browse latest Browse all 21942

Trending Articles


TRX Antek AVT - 2310 ver 2,0


Автовишка HAULOTTE HA 16 SPX


POTANIACZ


Zrób Sam - rocznik 1985 [PDF] [PL]


Maxgear opinie


BMW E61 2.5d błąd 43E2 - klapa gasząca a DPF


Eveline ➤ Matowe pomadki Velvet Matt Lipstick 500, 506, 5007


Auta / Cars (2006) PLDUB.BRRip.480p.XviD.AC3-LTN / DUBBING PL


Peugeot 508 problem z elektroniką


AŚ Jelenia Góra