インスタンス化に失敗した際の処理について
Posted: 2010年8月31日(火) 01:10
お世話になっております。今回はC++のクラスの動作について質問させて下さい。
(例)
class CTest
{
CTest() { throw "Error"; }
void print() { std::cout << "Hello" << std::endl; }
};
int main()
{
CTest* test;
try
{
test = new CTest();
}
catch (...)
{
test = NULL;
}
test->print(); // ポイント①
return 0;
}
上記の例の様な(例)でクラスの生成に失敗したら例外を投げるクラスを作成したのですが
失敗(例外を検出)した際に、ポインタにNULLを入れていました。
個人的には、ポイント①の箇所では、test = NULLの時は処理を行わず飛ばしてくれると
有難いのですが、NULLポインタの為、print()メソッドを参照できないみたいです。
纏めると、インスタンス化に失敗してもprint()メソッド部でエラーが起きないようにしたいのですが
可能でしょうか。
宜しくお願いします。
(例)
class CTest
{
CTest() { throw "Error"; }
void print() { std::cout << "Hello" << std::endl; }
};
int main()
{
CTest* test;
try
{
test = new CTest();
}
catch (...)
{
test = NULL;
}
test->print(); // ポイント①
return 0;
}
上記の例の様な(例)でクラスの生成に失敗したら例外を投げるクラスを作成したのですが
失敗(例外を検出)した際に、ポインタにNULLを入れていました。
個人的には、ポイント①の箇所では、test = NULLの時は処理を行わず飛ばしてくれると
有難いのですが、NULLポインタの為、print()メソッドを参照できないみたいです。
纏めると、インスタンス化に失敗してもprint()メソッド部でエラーが起きないようにしたいのですが
可能でしょうか。
宜しくお願いします。