#include <iostream>
using namespace std;
struct Resource
{
Resource( int id)
{
m_id = id;
if ( id == 3 )
{
throw "Error during initialize: id can't be 3" ;
}
std:: cout << "initialize resource with id: " << id << std:: endl ;
}
~Resource( )
{
std:: cout << "Destroy Resource with id: " << m_id << std:: endl ;
}
private :
int m_id;
} ;
struct ResourceWrapper
{
ResourceWrapper( int id1, int id2, int id3, int id4, int id5)
: m_rc1( id1) ,
m_rc2( id2) ,
m_rc3( id3) ,
m_rc4( id4) ,
m_rc5( id5)
{
}
private :
Resource m_rc1;
Resource m_rc2;
Resource m_rc3;
Resource m_rc4;
Resource m_rc5;
} ;
int main( )
{
{
std:: cout << "without errors:" << std:: endl ;
ResourceWrapper rc( 5 ,6 ,7 ,8 ,9 ) ;
}
std:: cout << "==========================" << std:: endl ;
try
{
std:: cout << "with errors:" << std:: endl ;
ResourceWrapper rc( 1 ,2 ,3 ,4 ,5 ) ;
}
catch ( const char * error)
{
std:: cout << "Error: " << error << std:: endl ;
}
// your code goes here
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFJlc291cmNlCnsKCVJlc291cmNlKGludCBpZCkKCXsKCQkKCQltX2lkID0gaWQ7CgkJaWYoaWQgPT0gMykKCQl7CgkJCXRocm93ICJFcnJvciBkdXJpbmcgaW5pdGlhbGl6ZTogaWQgY2FuJ3QgYmUgMyI7CgkJfQoJCXN0ZDo6Y291dCA8PCAiaW5pdGlhbGl6ZSByZXNvdXJjZSB3aXRoIGlkOiAiIDw8IGlkIDw8IHN0ZDo6ZW5kbDsKCgl9CgkKCX5SZXNvdXJjZSgpCgl7CgkJc3RkOjpjb3V0IDw8ICJEZXN0cm95IFJlc291cmNlIHdpdGggaWQ6ICIgPDwgbV9pZCA8PCBzdGQ6OmVuZGw7Cgl9CgkKcHJpdmF0ZToKICAgIGludCBtX2lkOwp9OwoKc3RydWN0IFJlc291cmNlV3JhcHBlcgp7CglSZXNvdXJjZVdyYXBwZXIoaW50IGlkMSwgaW50IGlkMiwgaW50IGlkMywgaW50IGlkNCwgaW50IGlkNSkKCTogbV9yYzEoaWQxKSwKCSAgbV9yYzIoaWQyKSwKCSAgbV9yYzMoaWQzKSwKCSAgbV9yYzQoaWQ0KSwKCSAgbV9yYzUoaWQ1KQoJewoJfQoJCnByaXZhdGU6CiAgIFJlc291cmNlIG1fcmMxOwogICBSZXNvdXJjZSBtX3JjMjsKICAgUmVzb3VyY2UgbV9yYzM7CiAgIFJlc291cmNlIG1fcmM0OwogICBSZXNvdXJjZSBtX3JjNTsKfTsKCmludCBtYWluKCkgCnsKCQoJewoJCXN0ZDo6Y291dCA8PCAid2l0aG91dCBlcnJvcnM6IiA8PCBzdGQ6OmVuZGw7CgkJUmVzb3VyY2VXcmFwcGVyIHJjKDUsNiw3LDgsOSk7Cgl9CgkKCXN0ZDo6Y291dCA8PCAiPT09PT09PT09PT09PT09PT09PT09PT09PT0iIDw8IHN0ZDo6ZW5kbDsKCXRyeQoJewoJCXN0ZDo6Y291dCA8PCAid2l0aCBlcnJvcnM6IiA8PCBzdGQ6OmVuZGw7CgkJUmVzb3VyY2VXcmFwcGVyIHJjKDEsMiwzLDQsNSk7Cgl9CgljYXRjaChjb25zdCBjaGFyKiBlcnJvcikKCXsKCQlzdGQ6OmNvdXQgPDwgIkVycm9yOiAiIDw8IGVycm9yIDw8IHN0ZDo6ZW5kbDsKCX0KCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXJldHVybiAwOwp9