Полагаю, вы имеете в виду эту настройку:
// file adjutancy.h
// ... includes for all classes used below
// forward declarations are OK for pointers and references
class Adjutancy
{
public:
Adjutancy(vector<Vehicale*,CompareCatId>* vehicalesVector , map<const string,Base*>* baseMap , map<const int,City*>* citiesMap , vector<vector<Distance*>>* distancesMatrix);
private:
vector<Vehicale*,CompareCatId>* m_vehicalesVector;
map<const string,Base*>* m_baseMap;
map<const int,City*>* m_citiesMap;
vector<vector<Distance*>>* m_distancesMatrix;
};
// file adjutancy.cpp
#include "adjutancy.h"
Adjutancy::Adjutancy(vector<Vehicale*,CompareCatId>* vehicalesVector,map<const string,Base*>* baseMap,map<const int,City*>* citiesMap,vector<vector<Distance*>>* distancesMatrix)
: m_vehicalesVector(vehicalesVector),
m_baseMap(baseMap),
m_citiesMap(citiesMap),
m_distancesMatrix(distancesMatrix)
{ }
Это ужасный код, и по нескольким причинам:
- Вы храните указатель на
std::vector
s иstd::map
s в вашем классе: просто храните vector
s и map
s сами, здесь указатели не нужны.В качестве альтернативы, сохраните ссылку, но остерегайтесь ограничений (без неинициализированных элементов справочных данных!). - Вам следует избегать списков типов шаблонов с
>>
, ставить пробел между ними, или некоторые компиляторы будутневерно истолковать его как operator>>
. - Не используйте операторы
using
в своем заголовке, вместо этого используйте полный префикс пространства имен.
Я не могу сказать, что этонеправильно (на первый взгляд все выглядит правильно), пока вы не покажете мне свою main
(завершенную!) функцию и то, как вы хотите использовать свой конструктор.
Лучшая версия:
// file adjutancy.h
#include <map>
#include <string>
#include <vector>
class Adjutancy
{
public:
Adjutancy( std::vector<Vehicale*,CompareCatId> &vehicalesVector,
std::map<const std::string,Base*> &baseMap,
std::map<const int,City*> &citiesMap,
std::vector<std::vector<Distance*> > &distancesMatrix );
private:
std::vector<Vehicale*,CompareCatId> &m_vehicalesVector;
std::map<const std::string,Base*> &m_baseMap;
std::map<const int,City*> &m_citiesMap;
std::vector<std::vector<Distance*> > &m_distancesMatrix;
};
// file adjutancy.cpp
#include "adjutancy.h"
#include <map>
using std::map;
#include <string>
using std::string;
#include <vector>
using std::vector;
Adjutancy::Adjutancy( vector<Vehicale*, CompareCatId> &vehicalesVector,
map<const string, Base*> &baseMap,
map<const int, City*> &citiesMap,
vector<vector<Distance*> > &distancesMatrix )
: m_vehicalesVector( vehicalesVector ),
m_baseMap( baseMap ),
m_citiesMap( citiesMap ),
m_distancesMatrix( distancesMatrix )
{ }
Также помните: «транспортное средство» - правильное английское правописание.