У меня возникла проблема при попытке скомпилировать эти два класса (армейский и общий) в свои собственные заголовочные файлы:
#ifndef ARMY_H
#define ARMY_H
#include "definitions.h"
#include "UnitBase.h"
#include "UnitList.h"
#include "General.h"
class Army
{
public:
Army(UnitList& list);
~Army(void);
UnitBase& operator[](const ushort offset);
const UnitBase& operator[](const ushort offset) const;
const uint getNumFightUnits() const;
const ushort getNumUnits() const;
const General<Warrior>* getWarrior() const;
private:
UnitBase** itsUnits;
uint itsNumFightUnits;
ushort itsNumUnits;
WarriorGeneral* itsGeneral;
};
#endif
и
#ifndef GENERAL_H
#define GENERAL_H
#include "generalbase.h"
#include "Warrior.h"
class Army;
template <class T>
class General : public GeneralBase, public T
{
public:
General(void);
~General(void);
void setArmy(Army& army);
const Army& getArmy() const;
private:
Army* itsArmy;
};
typedef General<Warrior> WarriorGeneral;
#endif
Я попытался переслатьобъявляя WarriorGeneral в Army.h, но, похоже, он не работает, возможно, потому что это экземпляр шаблона?Во всяком случае, ошибки, которые я получаю с вышеприведенной версией, - это несколько подобных проблем и связанных с ними проблем:
Army.h(21): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Они даже не являются неразрешенными проблемами с компоновщиком ... Примечание.General.h файл.Я не знаю, правильно ли это.Что-нибудь можно сделать, чтобы сделать эту работу?
Заранее спасибо!