У меня есть класс очереди, реализованный со связанным списком, и у меня есть класс с именем Unit
при создании очереди, которая принимает список указателей классов модулей и запускает Visual Studio, это выдает ошибку:
Node::item использует неопределенный класс Unit.
Я использовал метод прямого объявления, но он не сработал.
Node.h
#ifndef _NODE
#define _NODE
class Unit;
template < typename T>
class Node
{
private :
T item; // A data item
Node* next; // Pointer to next node
public :
Node();
Node( const T & r_Item);
Node( const T & r_Item, Node* nextNodePtr);
void setItem( const T & r_Item);
void setNext(Node* nextNodePtr);
T getItem() const ;
Node* getNext() const ;
}; // end Node
template < typename T>
Node::Node()
{
next = nullptr;
}
template < typename T>
Node::Node( const T& r_Item)
{
item = r_Item;
next = nullptr;
}
template < typename T>
Node::Node( const T& r_Item, Node* nextNodePtr)
{
item = r_Item;
next = nextNodePtr;
}
template < typename T>
void Node::setItem( const T& r_Item)
{
item = r_Item;
}
template < typename T>
void Node::setNext(Node* nextNodePtr)
{
next = nextNodePtr;
}
template < typename T>
T Node::getItem() const
{
return item;
}
template < typename T>
Node* Node::getNext() const
{
return next;
}
#endif
Unit.h
#pragma once
using namespace std;
#include
#include"Game.h"
enum Type { EarthSol, Tank, Gunnery, AlienSol, Monster, Drone,Heal };
class Unit
{
private:
int Id;
Type mytype;
int Tj;
double Health;
int power;
int Cap;
Game* gamePtr; // can be protected
public:
Unit(Game* ptr=nullptr ,int Cap=0, double health=0, int ti=0, int power=0, int id=0, Type t=EarthSol );
void setcap(int x);
void sethealth(double h);
void setTj(int ti);
void setpower(int p);
void setid(int i);
void settype(Type t);
int getcap() const ;
double gethealth() const;
int getTj() const;
int getpower() const;
int gettid() const;
Type gettype() const;
bool Dechealth(int d) ;
bool isdead();
void virtual print() const;
void enumconv(Type t) const;
Game* getGamePtr()const;
bool inchealth(int h);
};
Unit.cpp
#include "Unit.h"
Unit::Unit(Game * ptr,int x, double h, int ti, int p, int i, Type t)
{
gamePtr = ptr;
Cap = x;
Health = h;
Tj = ti;
power = p;
Id = i;
mytype = t;
}
void Unit::setcap(int x)
{
Cap = x;
}
void Unit::sethealth(double h)
{
Health = h;
}
void Unit::setTj(int t)
{
Tj = t;
}
void Unit::setpower(int p)
{
power = p;
}
void Unit::setid(int i)
{
Id = i;
}
void Unit::settype(Type t)
{
mytype = t ;
}
bool Unit:: Dechealth(int d)
{
if (Health == 0)
return false;
else
Health = Health - d;
if (Health < 0)
{
Health = 0;
}
return true;
}
bool Unit:: isdead()
{
if (Health == 0)
return true;
else return false;
}
int Unit::getcap() const
{
return Cap;
}
double Unit::gethealth() const
{
return Health;
}
int Unit::getTj() const
{
return Tj;
}
int Unit::getpower() const
{
return power;
}
int Unit::gettid() const
{
return Id;
}
Type Unit::gettype() const
{
return mytype;
}
void Unit:: print() const
{
/* cout
Подробнее здесь: https://stackoverflow.com/questions/783 ... class-unit
Visual Studio выдает ошибку: Node::item использует неопределенный класс Unit ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Vuetify 2->3 заменяет удаленное содержимое v-list-item-content/v-list-item-group
Anonymous » » в форуме CSS - 0 Ответы
- 54 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Неопределенный класс при использовании __declspec(dllexport) начиная с Visual Studio 17.2
Anonymous » » в форуме C++ - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Неопределенный класс при использовании __declspec(dllexport) начиная с Visual Studio 17.2
Anonymous » » в форуме C++ - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-