Ciao a tutti!  non riesco a capire perché il vettore _atk definito nella classe Monster non legge i metodi che ho definito nella classe Attacks. Qualcuno mi può aiutare?
Attacks::Attacks(int ID): _ID(ID)
{
}
Attacks::Attacks(const Attacks & to_copy){
this->_ID=to_copy.ID();
this->_name=to_copy.name();
this->_PDB=to_copy.PDB();
this->_MSFA[0]=to_copy.MSFA0();
this->_MSFA[1]=to_copy.MSFA1();
this->_MSFA[2]=to_copy.MSFA2();
this->_MSFD[0]=to_copy.MSFD0();
this->_MSFD[1]=to_copy.MSFD1();
this->_MSFD[2]=to_copy.MSFD2();
}
Attacks:: Attacks(string line_entry){
stringstream ss(line_entry);
ss>> _ID>> _name>> _PDB;
for(unsigned int i=0; i< line_entry.size(); ++i){
   int j;
  if(line_entry.find("attaccante")!= string::npos){
    if(line_entry.find("PA")!= string::npos){
          j=0;
    }
    else if(line_entry.find("PD")!= string::npos){
          j=1;
    }
    else if(line_entry.find("PV")!= string::npos){
          j=2;
    }
          if(line_entry.find("-")!= string::npos){
            _MSFA[j]=-1;
              if(line_entry.find("-")!= string::npos){
                _MSFA[j]--;
                ss>>_MSFA[0]>>_MSFA[1]>>_MSFA[2];
                }
          else ss>>_MSFA[0]>>_MSFA[1]>>_MSFA[2];
          }
          else if(line_entry.find("+")!= string::npos){   // npos significa -1
            _MSFA[j]=1;
            if(line_entry.find("+")!= string::npos){
            _MSFA[j]++;
            ss>>_MSFA[0]>>_MSFA[1]>>_MSFA[2];
        }
        else ss>>_MSFA[0]>>_MSFA[1]>>_MSFA[2];
        }
}
if(line_entry.find("difensore")!= string::npos){
    if(line_entry.find("PA")!= string::npos){
          j=0;
    }
    else if(line_entry.find("PD")!= string::npos){
          j=1;
    }
    else if(line_entry.find("PV")!= string::npos){
          j=2;
    }
          if(line_entry.find("-")!= string::npos){
            _MSFD[j]=-1;
              if(line_entry.find("-")!= string::npos){
                _MSFD[j]--;
                ss>>_MSFD[0]>>_MSFD[1]>>_MSFD[2];
                }
          else ss>>_MSFD[0]>>_MSFD[1]>>_MSFD[2];
          }
          else if(line_entry.find("+")!= string::npos){
            _MSFD[j]=1;
            if(line_entry.find("+")!= string::npos){
            _MSFD[j]++;
            ss>>_MSFD[0]>>_MSFD[1]>>_MSFD[2];
        }
        else ss>>_MSFD[0]>>_MSFD[1]>>_MSFD[2];
        }
}
        if(line_entry.find("p")!= string::npos){
            _priority=true;
        }
        ss>>_priority;
}
}
int Attacks:: ID()const{
return _ID;
}
string Attacks:: name()const{
return _name;
}
int Attacks::PDB()const{
return _PDB;
}
int Attacks::MSFA0()const{
return _MSFA[0];
}
int Attacks::MSFA1()const{
return _MSFA[1];
}
int Attacks::MSFA2()const{
return _MSFA[2];
}
int Attacks::MSFD0()const{
return _MSFD[0];
}
int Attacks::MSFD1()const{
return _MSFD[1];
}
int Attacks::MSFD2()const{
return _MSFD[2];
}
bool Attacks:: priority()const{
return _priority;
}
#include "Attacks.h"
#include "Filemanager.h"
#include <string>
#include <sstream>
#include <vector>
#include <fstream>
#include <iostream>
using namespace std;
class Monster
{
    public:
        Monster();
        Monster(const Monster & to_copy);
        virtual ~Monster();
        Monster(string line_entry);
        string name()const;
        int speed()const ;
        int ID()const;
        int PS()const;
        int PA()const;
        int PD()const;
        void read_file_attacks();
        vector <Attacks> _atk;
    private:
        FileManager _f_attacks;
        string _name;
        int _ID,_PS,_PA,_PD,_speed;
};
#endif // MONSTER_H
void Monster:: read_file_attacks(){
 _f_attacks.openFile ( "attacchi.txt" );
 while (!_f_attacks .testEof()){
        string line=_f_attacks.readLine();
        Attacks new_attacks(line);
        _atk.push_back(new_attacks);
}
_f_attacks.closeFile();
}