کدنگار

وبلاگ شخصی-آموزشی علی رشیدی

کدنگار

وبلاگ شخصی-آموزشی علی رشیدی

طبقه بندی موضوعی
پیوندهای روزانه
پیوندها

۲ مطلب با کلمه‌ی کلیدی «C++» ثبت شده است

در قسمتی دیگر از پروژه، این بار قرار بود که اطلاعات یک آرایه پویا (که از نوع یک شی بود) را بخوانم و پردازش کنم... خب، مشکل این بود که سایز آرایه نامعلوم بود و هنگام پردازش با خطا مواجه می شد. در واقع کلاسی که من داشتم:


class Test
{
public:
void print()
{
...
}

void setObject(MyObject *obj)
{
object = obj;
}

private:
MyObject *object;
};

خب، ست کردن آرایه که کاری نداشت اما مشکل در تابع print بود، چگونه بدون دانستن سایز آنرا چاپ کنیم؟ اول سرچ کردم و روش مشخصی پیدا نکردم، پس تصمیم گرفتم که ببینم اصلا اگر بخواهیم عضوی خارج از محدوده را بخوانیم چه میشود؟ در تابع پرینت عبارت


cout << object[4].getText();

را وارد کردم و این شی رو با یک آرایه ۴ عضوی ست کردم، و هنگام اجرا متوجه شدم که


terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc

این یک استثنا بود (Exception) و برای کنترل آن راحت می شد از try & catch استفاده کرد. پس پرینت را به این صورت نوشتم:


void print()
{
int i;
bool end;
try
{
i = 0;
while(!end)
{
cout << object[i].getText();
i++;
}
}

catch (const std::bad_alloc&)
{
end = true;
}
}

خیلی ساده، به محض اینکه به اولین عضو خارج از دامنه برسیم، استثنا رخ میدهد و خواندن ارایه متوقف میشود.

  • علی رشیدی

یه برنامه ی ساده نوشته شده با ++C برای اینکه مباحث اساسی شی گرایی رو بهتر بفهمید. هر گونه سوالی در زمینه ی کامپایل و عیب یابی داشتید در بخش نظرات اعلام کنید.


دانلود سورس برنامه


دانلود فایل اجرایی برای لینوکس (فایل های uit باید در کنار فایل اجرایی باشند)


دانلود فایل اجرایی ویندوز (فایل های uit باید در کنار فایل اجرایی باشند)

  • علی رشیدی