Извините, если вы видели этот вопрос, прежде чем он еще не получил ответа, по существу в моем коде. У меня есть две структуры, определенные в отдельных заголовках и используемые во всем мире по всему проекту. Я просто хочу использовать обе структуры (которые снова определены в двух отдельных заголовках) в других файлах cpp, а не только те, к которым принадлежит файл заголовка. Ниже приведен пример кода, который я испытал:Использование нескольких структур в заголовочных файлах C++
Class1.h
#include "class2.h"
#include <vector>
#include <string>
struct trans1{
string name;
};
class class1 {
private:
vector <trans2> t2;
public:
class1();
};
class2.h
#include "class1.h"
#include <vector>
#include <string>
struct trans2{
string type;
};
class class2{
private:
vector <trans1> t1;
public:
class2();
};
ErrorLog:
In file included from class1.h:3:0,
from class1.cpp:1:
class2.h:21:13: error: 'trans1' was not declared in this scope
vector <trans1> t1;
^
class2.h:21:19: error: template argument 1 is invalid
vector <trans1> t1;
^
class2.h:21:19: error: template argument 2 is invalid
Я понимаю, что это смешной код в реальном мире, однако это просто что я мог бы продемонстрировать.
Следует отметить, что если я просто прокомментирую объявление вектора t1 или t2 под «private:», код обязательно компилируется. Это просто факт, что я использую вторую структуру.
Любая помощь кому-нибудь? Благодарю.
Можете ли вы поместить структуры «trans» в свой собственный заголовочный файл? –
Возможный дубликат [Использование структуры между классами в C++] (http://stackoverflow.com/questions/29195200/using-a-struct-across-classes-in-c) – erip