Как уже было сказано, вам не нужно писать префикс struct
в C++, поскольку компилятор может определить правильный тип только по имени. Но я предлагаю использовать reinterpret_cast в этой ситуации, так как приведение стиля c - это бросок с большим молотом, который бросает типы и константы-спецификаторы за один раз.
struct socksddr_storage ss;
const struct socksddr_storage ss2;
struct sockaddr *sa;
sa = reinterpret_cast<sockaddr *>(&ss); // Works like the C Cast
sa = reinterpret_cast<sockaddr *>(&ss2); // Fails, because ss2 is a constant,
// but sa is a pointer to a no const memory location. The C cast will allow
// this assignment, but this can lead to runtime errors since the linker
// can place ss2 into read-only memory.