Код: Выделить всё
class BinaryU32;
class BinaryU64 {
<...>
BinaryU64 operator+ (BinaryU32 &);
<...>
};
class BinaryU32 {
<...>
BinaryU64 operator+ (BinaryU64 &);
<...>
};
при этом ругаться уже не будет, пока вы не залезете внутрь BinaryU32. А вы не лезьте. Если нужен метод, который лезет, запишите его ПОСЛЕ class BinaryU32{...};
Можно даже в другом файле это сделать. (т.е не в *.hpp, а в *.cpp)
PS: также можно объявлять не только классы, но и всё что угодно. Переменные, функции(глобальные), и ещё друзей(в т.ч. и классы-друзья).
PPS:
drBatty писал(а): ↑23.09.2013 13:31
BinaryU32 &
ссылку и указатель оно съест. А вот сам объект -- уже нет. Причина в том, что для передачи объекта нужен конструктор копии, а он в данный момент неизвестен. Это ещё один аргумент против передачи по значению в C++.