با سلام
می خواستم معادل دستور static_cast رو
که برای C++ builder هست رو توی دلفی بدونم
با سلام
می خواستم معادل دستور static_cast رو
که برای C++ builder هست رو توی دلفی بدونم
من آشنایی چندانی با ++C ندارم، ولی به نظر میرسه که برای Compile-time type-cast استفاده میشه، برای همچین موردی، در دلفی می تونید از type-cast معمولی استفاده کنید، یعنی ابتدا نوع داده را بنویسید، سپس مقدار مربوطه را در داخل پرانتز، مثلا:
varاین کد، مقدار P (که یک اشاره گر هست) را به Integer تبدیل نوع میکنه، و حاصل را در I ذخیره میکنه.
P : Pointer;
I : Integer;
...
I := Integer(P);
یک dynamic_Cast هم در ++C هست که معادلش در دلفی تقریبا میشه عملگر as:
(Sender as TButton).Visible := True;
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
با سلام
دوست عزیز جوابی که شما دادید مد نظر من نیست
نمونه کد پایین یک کد در Qt است که ما می توانیم یک شی از چندین
شی از کلاس را انتخاب کرده و خصوصیات آنرا تغییر دهیم مثلا ما یک کلاس
با وراثت از TLabel می سازیم و بعد روی فرم آنرا فرا خوانی می کنیم و حالا
با کلیک بر روی هریک می توانیم به خصوصیات آن دسترسی داشته باشیم
void Widget::mousePressEvent(QMouseEvent *ev)
{
// A کلاس
// lb شی کلاس
lb = static_cast<A*>( childAt(ev->pos()) );
if(lb){
test=true;
}
}
میشه واضح تر توضیح بدین؟
آیا منظورتون اینه که در زمان اجرا بتوانید خصوصیات یک شی رو بدست بیاورید؟
با سلام
بله دقیقا همینو می خوام
جواب شما همون چیزی هست که در پست قبل توضیح دادم، یعنی 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)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.