Мой код имеет такую же структуру, как показано ниже. У меня есть два контейнерных класса, определенных в одном заголовочном файле, и у каждого из них есть функция друга с параметрами типа другой класс, поэтому я получаю ошибку компиляции, которая похожа на 'Class2' - необъявленный идентификатор.
Пробовал несколько вещей, но не сработало. Я думаю, что если добавить еще один параметр шаблона V к обоим шаблонам и заменить Class2<T>
на это, то это может быть решением, но если я использую эти контейнеры в своей программе, все станет намного сложнее. Заголовки, а затем включить в Class1 Class2 и наоборот, но я на самом деле сомневаюсь, что это может работать вообще.
Я действительно не могу понять, как решить эту проблему, поэтому, пожалуйста, ваша помощь очень ценится!
template<class T>
class Class1
{
...
friend void function1(Class1<Class2<T>>&, const Class2<T>&);
...
};
template<class V>
class Class2
{
...
friend void function2(Class1<V>);
...
};