Index: /trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp
===================================================================
--- /trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp	(revision 203)
+++ /trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp	(revision 204)
@@ -472,6 +472,6 @@
 			//（継承元がインターフェイスの場合も基底クラスと見なす）
 			BOOL bThisIsSuperClass;
-			if(Smoothie::Temp::pCompilingClass->pobj_InheritsClass==0) bThisIsSuperClass=1;
-			else if( Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod() == NULL ){
+			if( !Smoothie::Temp::pCompilingClass->HasSuperClass() ) bThisIsSuperClass=1;
+			else if( Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod() == NULL ){
 				//インターフェイスを継承したときはコンストラクタを持たない
 				bThisIsSuperClass=1;
@@ -492,5 +492,5 @@
 					temporary[i4]=basbuf[i3];
 				}
-				if( Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetName() == temporary ){
+				if( Smoothie::Temp::pCompilingClass->GetSuperClass().GetName() == temporary ){
 					//基底クラスのコンストラクタを呼び出す
 					cp=i3;
@@ -509,6 +509,6 @@
 					Type dummyType;
 					CallProc( PROC_DEFAULT
-						, Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc
-						, Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc->GetName().c_str()
+						, Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod()->pUserProc
+						, Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod()->pUserProc->GetName().c_str()
 						, temporary
 						, dummyType );
@@ -517,5 +517,5 @@
 					//基底クラスのコンストラクタを暗黙的に呼び出す
 					Opcode_CallProc("",
-						Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc,
+						Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod()->pUserProc,
 						0,
 						"",
@@ -590,9 +590,9 @@
 			Smoothie::Temp::pCompilingClass->NotifyFinishDestructorCompile();
 
-			if(Smoothie::Temp::pCompilingClass->pobj_InheritsClass){
+			if( Smoothie::Temp::pCompilingClass->HasSuperClass() ){
 				/* サブクラスのデストラクタをコンパイルしているときは、
 					基底クラスのデストラクタを呼び出す */
 
-				const CMethod *method = Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetDestructorMethod();
+				const CMethod *method = Smoothie::Temp::pCompilingClass->GetSuperClass().GetDestructorMethod();
 				if( method ){
 					Opcode_CallProc("",
Index: /trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp
===================================================================
--- /trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp	(revision 203)
+++ /trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp	(revision 204)
@@ -523,6 +523,6 @@
 			//（継承元がインターフェイスの場合も基底クラスと見なす）
 			BOOL bThisIsSuperClass;
-			if(Smoothie::Temp::pCompilingClass->pobj_InheritsClass==0) bThisIsSuperClass=1;
-			else if( Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod() == NULL ){
+			if( !Smoothie::Temp::pCompilingClass->HasSuperClass() ) bThisIsSuperClass=1;
+			else if( Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod() == NULL ){
 				//インターフェイスを継承したときはコンストラクタを持たない
 				bThisIsSuperClass=1;
@@ -543,5 +543,5 @@
 					temporary[i4]=basbuf[i3];
 				}
-				if( Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetName() == temporary ){
+				if( Smoothie::Temp::pCompilingClass->GetSuperClass().GetName() == temporary ){
 					//基底クラスのコンストラクタを呼び出す
 					cp=i3;
@@ -560,6 +560,6 @@
 					Type dummyType;
 					CallProc( PROC_DEFAULT
-						, Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc
-						, Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc->GetName().c_str()
+						, Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod()->pUserProc
+						, Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod()->pUserProc->GetName().c_str()
 						, temporary
 						, dummyType );
@@ -568,5 +568,5 @@
 					//基底クラスのコンストラクタを暗黙的に呼び出す
 					Opcode_CallProc("",
-						Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc,
+						Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod()->pUserProc,
 						0,
 						"",
@@ -640,9 +640,9 @@
 			Smoothie::Temp::pCompilingClass->NotifyFinishDestructorCompile();
 
-			if(Smoothie::Temp::pCompilingClass->pobj_InheritsClass){
+			if( Smoothie::Temp::pCompilingClass->HasSuperClass() ){
 				/* サブクラスのデストラクタをコンパイルしているときは、
 					基底クラスのデストラクタを呼び出す */
 
-				const CMethod *method = Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetDestructorMethod();
+				const CMethod *method = Smoothie::Temp::pCompilingClass->GetSuperClass().GetDestructorMethod();
 				if( method ){
 					Opcode_CallProc("",
Index: /trunk/abdev/BasicCompiler_Common/error.cpp
===================================================================
--- /trunk/abdev/BasicCompiler_Common/error.cpp	(revision 203)
+++ /trunk/abdev/BasicCompiler_Common/error.cpp	(revision 204)
@@ -480,5 +480,5 @@
 				pobj_tempClass=(CClass *)lpCalcIndex;
 				while(pobj_tempClass&&(!IS_LITERAL((LONG_PTR)pobj_tempClass))){
-					pobj_tempClass=pobj_tempClass->pobj_InheritsClass;
+					pobj_tempClass=&pobj_tempClass->GetSuperClass();
 
 					if(lpVarIndex==(LONG_PTR)pobj_tempClass){
Index: /trunk/abdev/BasicCompiler_Common/src/ClassImpl.cpp
===================================================================
--- /trunk/abdev/BasicCompiler_Common/src/ClassImpl.cpp	(revision 203)
+++ /trunk/abdev/BasicCompiler_Common/src/ClassImpl.cpp	(revision 204)
@@ -241,5 +241,5 @@
 
 	//継承先のクラスをメンバとして保持する
-	pobj_InheritsClass = &inheritsClass;
+	SetSuperClass( &inheritsClass );
 
 	return true;
@@ -807,8 +807,9 @@
 			else{
 				//継承無し
-				pobj_c->pobj_InheritsClass=0;
-
-				//仮想関数の数を初期化
-				pobj_c->SetVtblNum( 0 );
+				if( &pobj_c->GetSuperClass() || pobj_c->GetVtblNum() )
+				{
+					// TODO: ここに来ないことが実証できたらこの分岐は消す
+					throw;
+				}
 			}
 Interface_InheritsError:
@@ -939,9 +940,9 @@
 
 			if( pobj_c->GetName() == "Object" || dwClassType == ESC_TYPE ){
-				// 継承無し
-				pobj_c->pobj_InheritsClass = NULL;
-
-				// 仮想関数の数を初期化
-				pobj_c->SetVtblNum( 0 );
+				if( &pobj_c->GetSuperClass() || pobj_c->GetVtblNum() )
+				{
+					// TODO: ここに来ないことが実証できたらこの分岐は消す
+					throw;
+				}
 			}
 			else{
@@ -1243,5 +1244,5 @@
 		}
 
-		if( objClass.pobj_InheritsClass ){
+		if( objClass.HasSuperClass() ){
 			sprintf( temporary
 				, "tempType=Search(\"%s\",\"%s\")"
@@ -1256,5 +1257,5 @@
 				, "tempType.SetBaseType(Search(\"%s\",\"%s\"))"
 				, ""								// 名前空間 (TODO: 実装)
-				, objClass.pobj_InheritsClass->GetName().c_str()	// 基底クラス名
+				, objClass.GetSuperClass().GetName().c_str()	// 基底クラス名
 				);
 
