|
お返事ありがとうございます。
改行は人によって入れる場所が違いますが、自分の書き方だと以下のようになります。
#define CHECK_EXCEPTION(expression, source, message) { if(expression){ throw Exception(source, message); } }
class Exception
{
public:
String source;
String message;
Exception(const String& source, const String& message)
{
this->source = source;
this->message = message;
}
};
template <class K, class V>
class Map
{
std::map<K, V> m;
Bool IsContain(K key)
{
Bool ret = True;
if(m.end() == m.find(key))
{
ret = False;
}
return ret;
}
V operator [] (K key)
{
if(False == IsContain(key))
{
throw Exceptin(L"Map::operator []", L"不正な引数です");
}
return m[key];
}
};
class Test
{
Map<Int, Void*> m_map;
// 方法@:中身9行
Void Func_1(Int index)
{
try
{
Void* p = m_map[index];
}
catch(Exception e)
{
e.source += L"\r\nTest::Func_1";
throw e;
}
}
// 方法A:中身6行
Void Func_2(Int index)
{
if(False == m_map.IsContain(index))
{
throw Exception(L"Test::Func_2", L"不正な引数です");
}
Void* p = m_map[index];
}
// 方法A※マクロ使用:中身3行
Void Func_2(Int index)
{
CHECK_EXCEPTION((False == m_map.IsContain(index)), L"Test::Func_2", L"不正な引数です");
Void* p = m_map[index];
}
};
|