Если вы не хотите использовать исключения (хотя по общему признанию, я использую в этой ситуации), вы можете создать статический метод для класса, в котором вы спрашиваете: «Могу ли я построить объект с этими параметрами?» и требуют, чтобы этот метод был вызван перед созданием. Таким образом, ваш конструктор станет
CudaObj::CudaObj(InsertionSim *theSim)
{
// Setup
ASSERT(cublasInit() == CUBLAS_STATUS_NOT_INITIALIZED)
...
}
А потом тебе понадобится
BOOL CudaObj::CanConstruct(InsertionSim *theSim)
{
// Check if we can construct
return TRUE; // Or FALSE
}
Таким образом, ваш код будет
if (CudaObj::CanConstruct(pSim))
{
pObj = new CudaObj(pSim);
}
else
{
// Handle invalid parameter
...
}
Вы также можете предоставить удобный метод для выполнения обоих действий (например, с использованием аргументов OUT).