متوافق مع Stdin $ مع STD :: ISTREAM باستخدام Swig، C ++، و Ruby

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

سؤال

لدي وظيفة في C ++ التي تأخذ في STD :: ISTream كإدخال:

class Foo {
    Foo(std::istream &);
}

باستخدام Swig، لقد ربطت ذلك إلى Ruby، ولكن متغير Stdin $ RUBY هو مختلفة بشكل أساسي عن أي شيء مثل فئات الدفق في C ++، لذلك لست متأكدا من كيفية إما 1) فضح فئة C ++ إلى Ruby بطريقة أقوم بها بطريقة أقوم بها يمكن استخدام Stdin $، أو 2) تحويل Stdin $ إلى شيء يمكن لفئة C ++ فهمه.

أي شخص لديه خبرة مع IOSTream ملزمة في C ++ إلى روبي؟

شكرا.

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

المحلول

يمكنك استخدام مثيل STD :: ISTREAM الذي ينفذ عملياته بأساليب روبي على StDin $ يسمى واجهة C (على سبيل المثال، باستخدام RB_Funcall). لا يمكنك القيام بذلك عن طريق اشتقاق فئة من STD :: ISTream نفسه، لأن أساليبها ليست افتراضية؛ بدلا من ذلك، ستحتاج إلى استخلاص من STD :: Stream_Buf وفكر إصدار ISTREAM الذي يستخدم المخزن المؤقت دفق الخاص بك.

نصائح أخرى

ربما يمكنك استخدام أسلوب C واصفات الملف بدلا من iststream ثم "تحويل" إلى دفق C ++،

أعتقد أنه يمكنك استخدام الإجابات في هذا سؤال

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