Возвращаемый тип ns3::NetDevice::GetChannel()
является своего рода пользовательских смарт-указатель; не видя определения этого, мы можем только догадываться, как вы можете преобразовать это в необработанный указатель.
Возможно, он реализует оператор преобразования operator T*()
, хотя это обычно считается плохой идеей, поскольку он делает непреднамеренные преобразования слишком легкими для выполнения случайно. В этом случае, вы можете сделать:
void * check = ns3::NetDevice::GetChannel();
В противном случае, возможно, он имеет функцию чтобы преобразовать в сырой указатель. Стандартный смарт-указатели обычно называют это get()
:
void * check = ns3::NetDevice::GetChannel().get();
Если он не предлагает, что, и вы действительно хотите, чтобы получить сырой указатель, то вы могли бы разыменованием и возьмите указатель на разыменованный объект (при условии, он поддерживает dererencing, в противном случае, это немного странно называть это указатель на всех):
void * check = &*ns3::NetDevice::GetChannel();
После того, как у вас есть void *
, вы можете использовать static_cast
, чтобы изменить его в unsigned char *
, если это то, что вы хотите. Будьте осторожны с тем, что вы делаете с ним, поскольку беспорядок с байтами объекта может легко привести к неопределенному поведению.
UPDATE: если ns3::Ptr
это шаблон документально here, то вы можете получить сырье указатель с помощью:
void * check = PeekPointer(ns3::NetDevice::GetChannel());
'reinterpret_cast' должен работать. – sth
Реинтерпрет литье очень странно применять. но я уже это сделал. coul'nt углу проблемы. вообще. –
Что такое тип возврата ** ns3 :: NetDevice :: GetChannel() **? – DumbCoder