Переопределение другой структуры с тем же именем
linked_list.h
#ifndef LINKED_LIST_H
#define LINKED_LIST_H
struct Data {
int data;
Data(int _data = 0);
~Data();
};
struct Node {
Data data;
Node* next_node;
Node* prev;
Node(Data _data = Data());
~Node();
};
class List {
Node* head;
public:
List();
~List();
void push_back(Data data);
void pop_back();
void show(List* list);
};
#endif // LINKED_LIST_H
queue.h
#ifndef QUEUE_H
#define QUEUE_H
struct Data {
int data;
Data(int _data = 0);
~Data();
};
struct Node {
Data data;
Node* next_node;
Node(Data _data = Data());
~Node();
};
class Queue {
Node* head;
public:
Queue();
~Queue();
void push(Data data);
void pop();
void show(Queue* head);
};
#endif // QUEUE_H
tests.cpp
#include "tests.h"
#include "linked_list.h"
#include "queue.h"
void test_linkedlist() {
List list;
list.push_back(1);
list.push_back(2);
list.push_back(3);
list.show(&list);
}
void test_queue() {
Queue queue;
queue.push(1);
queue.push(2);
}
Реализация, само собой, различается.
Собственно о проблеме. При попытки компиляции выдает ошибку "redefinition of ‘struct Data’", соответственно с Node та же история. Сёрф проблемы ничего не дал, везде преподносят другой корень ошибки. Есть ли какие-то пути избавления? Пожалуйста, если есть возможность, можете описать причину недовольства со стороны компилятора.