我有一些遺留的代碼看起來像這樣:鑄造的boost :: shared_array <void>提振:: shared_array <int>
void* getData(DataType dataType)
{
switch(dataType)
{
case TYPE_FLOAT:
return new float[ rows * clms ];
case TYPE_INT:
return new int[ rows * clms ];
case TYPE_DOUBLE:
return new double[ rows * clms ];
default:
return NULL;
}
}
我希望能夠做到這一點:
boost::shared_array <void> getData(DataType dataType)
{
boost::shared_array <void> theData;
switch(dataType)
{
case TYPE_FLOAT:
theData = boost::shared_array<float>(new float[ rows * clms ]);
break;
case TYPE_INT:
theData = boost::shared_array<int>(new int[ rows * clms ]);
break;
case TYPE_DOUBLE:
theData = boost::shared_array<double>(new double[ rows * clms ]);
break;
default:
break;
}
return theData;
}
但我無法得到正確的演員。我需要做些什麼才能使這個聲明起作用?
你是接近正確答案,則刪除器已經連接,問題是,不像在shared_ptr的不投,因爲它是對陣列有危險。 – CashCow 2011-03-08 14:43:41