У вас есть циркулярное включение.Queue.h
включает в себя EmailSystem.h
и EmailSystem.h
включает Queue.h
, поэтому защитные элементы включают в себя, что заголовок не влияет на второй раз, когда он включается.Это означает, что если Queue.h
будет первым, которое будет включено, то Queue
еще не будет объявлено до того, как оно будет впервые использовано в EmailSystem.h
, которое оно включает, на данный момент:
Queue<Email> mailbox;
I'mдогадываюсь, но я считаю маловероятным, что ваш шаблон Queue
(если это действительно шаблон общего класса) должен знать о Email
, поэтому вам, вероятно, следует удалить #include "EmailSystem.h"
из Queue.h
, чтобы решить вашу проблему.