نمایش نتایج 1 تا 6 از 6

نام تاپیک: معادل static_cast

  1. #1

    معادل static_cast

    با سلام
    می خواستم معادل دستور static_cast رو
    که برای C++‎ builder هست رو توی دلفی بدونم

  2. #2

    نقل قول: معادل static_cast

    من آشنایی چندانی با ++C ندارم، ولی به نظر میرسه که برای Compile-time type-cast استفاده میشه، برای همچین موردی، در دلفی می تونید از type-cast معمولی استفاده کنید، یعنی ابتدا نوع داده را بنویسید، سپس مقدار مربوطه را در داخل پرانتز، مثلا:
    var
    P : Pointer;
    I : Integer;

    ...
    I := Integer(P);
    این کد، مقدار P (که یک اشاره گر هست) را به Integer تبدیل نوع میکنه، و حاصل را در I ذخیره میکنه.

    یک dynamic_Cast هم در ++C هست که معادلش در دلفی تقریبا میشه عملگر as:

    (Sender as TButton).Visible := True;


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  3. #3

    نقل قول: معادل static_cast

    با سلام
    دوست عزیز جوابی که شما دادید مد نظر من نیست
    نمونه کد پایین یک کد در Qt است که ما می توانیم یک شی از چندین
    شی از کلاس را انتخاب کرده و خصوصیات آنرا تغییر دهیم مثلا ما یک کلاس
    با وراثت از TLabel می سازیم و بعد روی فرم آنرا فرا خوانی می کنیم و حالا
    با کلیک بر روی هریک می توانیم به خصوصیات آن دسترسی داشته باشیم
    void Widget::mousePressEvent(QMouseEvent *ev)
    {

    // A کلاس
    // lb شی کلاس

    lb = static_cast<A*>( childAt(ev->pos()) );

    if(lb){
    test=true;
    }
    }

  4. #4

    نقل قول: معادل static_cast

    میشه واضح تر توضیح بدین؟
    آیا منظورتون اینه که در زمان اجرا بتوانید خصوصیات یک شی رو بدست بیاورید؟

  5. #5

    نقل قول: معادل static_cast

    با سلام
    بله دقیقا همینو می خوام

  6. #6

    نقل قول: معادل static_cast

    دوست عزیز جوابی که شما دادید مد نظر من نیست
    جواب شما همون چیزی هست که در پست قبل توضیح دادم، یعنی Compile-time type-casting. اما شما نرفتید درباره اش تحقیق کنید.

    شما کارکرد static_cast در ++C رو می دونید؟ اگر می دونید، در دلفی، اگر بخواید یک نوع را به نوع دیگه در زمان کامپایل type cast کنید:
    NewObject := NewType(OldObject);
    اگر بخواید type cast را در زمان runtime انجام بدید، باید از عملگر as استفاده کنید:

    NewObject := OldObject as NewType
    اگر OldObject با NewType سازگاری نوع نداشته باشه، Exception میگیرید.

    اگر بخواید نوع یک شی را قبل از type-cast کردن بررسی کنید، باید از عملگر is استفاده کنید:

    if OldObject is NewType then
    /// Now you can type-cast the old object to NewType safely


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •