Выполненный traceroute. Буквально каждый интерфейс или маршрутизатор между Вами и местом назначения могут получить Ваши пакеты.
Запуск с Вашего собственного компьютера, выполняющего анализатор пакетов без Вашего ведома, возможно, в результате заражения.
Вместо этого можно использовать ссылки
struct A;
struct B {
A& a;
};
struct A {
B b;
};
Но нет возможности создать циклическую ссылку без некоторого уровня косвенности. Ваш образец даже не создает циклическую ссылку, а пытается создать рекурсивное определение. Результатом будет структура бесконечного размера и, следовательно, незаконная.
How could this work? If I remember correctly, the address value of a reference can't be modified once set, so you can't define a circular reference.
It could work like the following (same as Jared's example plus constructors defined):
struct A;
struct B {
A& m_a;
B(A& a) : m_a(a) {}
};
struct A {
B m_b;
//construct B m_b member using a reference to self
A() : m_b(*this) {}
//construct B m_b member using a reference to other
A(A& other) : m_b(other) {}
};
Нет, нет. Такая структура будет иметь бесконечный размер.
Вы можете использовать интеллектуальные указатели ( shared_ptr и weak_ptr ), чтобы избежать прямого манипулирования указателями,
Они также возникают время от времени, когда я кодирую. Вы можете переместить второй оператор using в другую функцию?
struct A;
struct B {
A* a;
B(A*);
};
struct A {
B* b;
A(B* b_) : b(b_) { if(b) b.a = this; }
};
B::B(A* a_) : : a(a_) { if(a) a.b = this; }
Я не думаю, что это можно сделать с помощью ссылок.