ورود

View Full Version : مقدار دهی یک متغیر در یک شی



alireza es
شنبه 04 مرداد 1393, 19:52 عصر
سلام.تصور کنید یه label داریم که میخوایم متن اون رو به TEXT تغییر بدیم
تو دلفی به این صورت عمل میکنیم
label.caption := 'TEXT';
ولی همون طور میدونید اگه کد رو توی کیوت به این صورت بنویسیم ارور میده
ui->label.text="TEXT";
و باید از یه تابع استفاده کنیم
ui->label.setText("TEXT");
چرا ؟مگه تو سی پلاس پلاس نمیشه یه متغیر از شی رو مقدار دهی کرد؟

MRmoon
شنبه 04 مرداد 1393, 20:24 عصر
درود.

ربطی به کیوت نداره و مربوط به c++ هستش.

در صورتی به متغیر از بیرون از کلاس دسترسی دارید (خوندن و نوشتن) که public باشه.

محمد.

returnx
شنبه 04 مرداد 1393, 22:01 عصر
در واقع این روشی است برای پیاده سازی بلاک های اکسسور در C++‎‎ ، بلاک هایی مانند Set , Get ، یعنی یک متغیر private تعریف می کنند و از دو متد Public که یکی وظیفه ی مقدار دهی و دیگری وظیفه خواندن مقدار متغیر را دارد استفاده میشه...
این روش برای جلوگیری از دسترسی مستقیم به مقادیر پراپرتی استفاده میشه تا جلوی مقادیر غیر مجاز را در زمان Set کردن بگیریم که از خطا های احتمالی جلوگیری کرده باشیم...
در استفاده از این روش هیچ اجباری نیست و شما میتونید متغیر مربوط به پراپرتی مورد نظرتون را به صورت public تعریف کنید و به صورت مستقیم و بدون استفاده از توابع اکسسور بهش مقدار بدید...

alireza es
یک شنبه 05 مرداد 1393, 13:50 عصر
در استفاده از این روش هیچ اجباری نیست و شما میتونید متغیر مربوط به پراپرتی مورد نظرتون را به صورت public تعریف کنید و به صورت مستقیم و بدون استفاده از توابع اکسسور بهش مقدار بدید...
مگه کیوت همچین امکانی رو فراهم اورده؟

kitten
یک شنبه 05 مرداد 1393, 14:34 عصر
مگه کیوت همچین امکانی رو فراهم اورده؟
دوست عزیز این چیزی که شما می پرسید اصلا هیچ ربطی به کیوت نداره این مربوط به طرز پیاده سازی کلاس ما هستش
اگه متغیر و داده ای که ما تعریف می کنیم از نوع private باشه چه تو زبان سی پلاس پلاس چه زبانهایی مثل سی شارپ و جاوا نمی تونیم بیرون از کلاس مستقیما بهش مقدار دهی کنیم و باید توابع واسه این کار بنویسیم که اصطلاحا بهشون میگن setter-getter funciton ها
حالا توی کیوت تمام متغیر های کلاسهای داخلی از نوع private هست پس حتما باید set داشته باشند یا همون اکسسور که دوستمون نوشتند
این مربوط به خصوصیات زبان های برنامه نویسی می باشد.
پیشنهاد می کنم کتاب دیتل و دیتل ماله سی پلاس پلاس رو بخونی تا واضح واست مشخص بشه