ما الذي يسبب MOVE_CAST_ERROR عند أسفل الصب كائن مرجع في ABAP؟

StackOverflow https://stackoverflow.com/questions/1610293

  •  05-07-2019
  •  | 
  •  

سؤال

وأنا خلق فئة يرث من الفئة الأصل مع مثيل المحمية. فئة سوبر لديها أسلوب ثابت التي توفر مثيل للفئة.

والتعليمة البرمجية التالية يؤدي إلى خطأ وقت التشغيل MOVE_CAST_ERROR:

data: o_child type ref to zchild.

o_child ?= zparent=>provide_instance( ).

ولقد حاولت أيضا:

data: o_parent type ref to zparent,
      o_child  type ref to zchild.

o_parent = zparent=>provide_instance( ).
o_child  ?= o_parent.

ولقد بنجاح أسفل مسبوكة مع أنواع الكائنات الأخرى في الماضي - هل لديها فكرة ما الذي تبحث عنه في ZPARENT أو ZCHILD التي قد تجعل فئتين تتعارض؟

وZCHILD حاليا ليس لديها سوى طريقة واحد اضافي، الذي إذا أضيف إلى فئة السوبر سوف كسر مجردة من الطبقة، لذلك أنا لست حريصا على القيام بذلك.

هل كانت مفيدة؟

المحلول

وأنا لم أفعل أي ترميز وجوه المنحى في ABAP. ولا الكثير البرمجة ABAP. ولكن أعتقد أن هذا هو السيناريو س س نموذجي. حتى هنا هو تخميني.

وأنت لا يمكن أن يلقي كائن إلى ما هو عليه لا.
لقد قمت بإنشاء مثيل من الفئة الأصل. الآن الطبقة الطفل لديه خاصية "myCandy" أن الفئة الأصل لم يكن لديك. ذلك الكائن لم يكن لديك هذا العقار. ثم يطرح للطفل. ما الفقراء وقت التشغيل لديها ما تفعله عندما تسأل عن (أو التغيير) والممتلكات "myCandy"؟ ويمكن أن تفعل أي شيء. لذلك ارفض هذا المدلى بها.

ويلقي ممكن فقط إذا تم إنشاء مثيل الكائن كما الولد وبعدها تم مسبوكة إلى الكائن الأصل ومن ثم العودة مرة أخرى إلى كائن الطفل. كان الطفل لديه كل شيء الوالد لديها حتى لا يكون هناك أي مشكلة مع هذا المسار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top