class PossiblyFail {
 ...
public:
 static PossiblyFail* Create() {
  PossiblyFail* p = new PossiblyFail;
  if( FAILED == p->Init() ) { delete p; return 0; }
  return p;
 }
};

か、あるいは

class ShippaiSurukamo {
 ...
public:
 ShippaiSurukamo() {
  ...
  m_bSuccessFully_Constructed = 異常なし?true:false;
 }
 operator bool() const {
  return m_bSuccessFully_Constructed;
 }
}

として if( ShippaiSurukamo obj ) { ... } else { /*エラー処理*/ } か、
じゃないか?よくある手としては。