Index: trunk/ab5.0/abdev/BasicCompiler_Common/error.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/error.cpp	(revision 561)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/error.cpp	(revision 562)
@@ -66,5 +66,7 @@
 			// デリゲート同士の比較の場合
 			// ※共変戻り値及び反辺引数をサポートすること
-			if( !varType.GetClass().GetDelegate().IsSimilar( calcType.GetClass().GetDelegate() ) )
+			const ::Delegate *pVarDelegate = &compiler.GetObjectModule().meta.ToDelegate( varType.GetClass() );
+			const ::Delegate *pCalcDelegate = &compiler.GetObjectModule().meta.ToDelegate( calcType.GetClass() );
+			if( !pVarDelegate->IsSimilar( *pCalcDelegate ) )
 			{
 				// 等しいと見なされないとき
Index: trunk/ab5.0/abdev/BasicCompiler_Common/include/Class.h
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/include/Class.h	(revision 561)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/include/Class.h	(revision 562)
@@ -384,7 +384,4 @@
 	}
 
-	// デリゲート情報を取得
-	const ::Delegate &GetDelegate() const;
-
 	// ユーザ指定のアラインメント固定値
 	int GetFixedAlignment() const
Index: trunk/ab5.0/abdev/BasicCompiler_Common/include/Meta.h
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/include/Meta.h	(revision 561)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/include/Meta.h	(revision 562)
@@ -153,3 +153,5 @@
 		return delegates;
 	}
+
+	const ::Delegate &ToDelegate( const CClass &_class );
 };
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Class.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Class.cpp	(revision 561)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Class.cpp	(revision 562)
@@ -294,21 +294,4 @@
 
 	return result;
-}
-
-const ::Delegate &CClass::GetDelegate() const
-{
-	const ::Delegate *dg = compiler.GetObjectModule().meta.GetDelegates().GetHashArrayElement( GetName().c_str() );
-	while( dg )
-	{
-		if( dg->IsEqualSymbol( GetNamespaceScopes(), GetName() ) ){
-			//名前空間とクラス名が一致した
-			return *dg;
-		}
-		dg = dg->GetChainNext();
-	}
-
-	Jenga::Throw( "CClass::GetDelegateメソッドに失敗" );
-	static ::Delegate dummy;
-	return dummy;
 }
 
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Meta.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Meta.cpp	(revision 561)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Meta.cpp	(revision 562)
@@ -163,2 +163,17 @@
 	meta.GetDelegates().PullOutAll();
 }
+
+const ::Delegate &Meta::ToDelegate( const CClass &_class )
+{
+	const ::Delegate *dg = this->GetDelegates().GetHashArrayElement( _class.GetName().c_str() );
+	while( dg )
+	{
+		if( dg->IsEqualSymbol( _class.GetNamespaceScopes(), _class.GetName() ) ){
+			//名前空間とクラス名が一致した
+			return *dg;
+		}
+		dg = dg->GetChainNext();
+	}
+
+	throw;
+}
