Я отвечаю на свой вопрос.
Дело в том, что я делаю не совсем то, что я написал, но я думаю, это было то же самое, на самом деле я использую операторы, которые принимают аргументы. Тело операторов должно быть определено после моих объявлений структур (вне структуры),
потому что структура B еще не знает членов структуры A ...
Я сказал, что это работает с классами, потому что с классами мы обычно используем файл CPP для определения методов, здесь я не использую какой-либо файл cpp для методов, которые я использую в своих структурах
Я собирался удалить это сообщение, но вы, ребята, слишком быстро;),
Вот пример
struct A;
struct B {
int member;
bool operator<(const A& right); //body not defined
};
struct A {
int member;
bool operator<(const B& right)
{
return this->member < B.member;
}
};
bool B::operator<(const A& right) //define the body here after struct A definition
{
return this->member < A.member;
}