Pari_Programmer
دوشنبه 22 خرداد 1391, 10:27 صبح
با سلام
من دارم روی یه برنامه خیلی ساده کار میکنم اما نمیدونم چرا به یک مشکل عجیب برخورد کردم و هر چی هم سعی کردم نتونستم حلش کنم. در این برنامه من یک کلاس بسیار ساده دارم. فرض کنیم به صورت زیر:
class myclass {
public:
myclass();
myclass(const myclass& orig);
virtual ~myclass();
string Text;
};
(البته این رو بگم که کلاس اولیه ای که تعریف کرده بودم خیلی پیچیده تر از این بود ولی وقتی با مشکل روبرو شدم تصمیم گرفتم که اول مشکلم رو با یک کلاس ساده مثل این حل کنم بعد برم سراغ کلاس اصلی). بگذریم.
حالا میخوام در تابع main یک vector از این کلاس بسازم و ازش استفاده کنم.
vector<myclass> myvect;
myclass tmp;
tmp.Text="TEST";
myvect.push_back(tmp);
cout<<myvect.front().Text<<endl;
اما نکته عجیب اینجاست که در خروجی به جای رشته TEST، فقط یک سطر خالی چاپ میشه.
من برای بررسی صحت عملکرد کامپایلر و سایر موارد اومدم و یک vector از نوع رشته تعریف کردم و بعد اون رو مقداردهی کردم. در این مورد مشکلی وجود نداشت. مشکل وقتی پیش میاد که من یه vector از کلاس می سازم. کسی میدونه علت این مسپله چیه و چه جوری میشه حلش کرد؟
ممنون
راستی این رو هم بگم که اگر در تابع main در سطر ۶ به جای درخواست چاپ محتویات عنصر اول بردار، بخوایم سایز جدید بردار رو چاپ کنیم
cout<<myvect.size()<<endl;
همه چیز درست کار میکنه و با اضافه شدن هر عنصر به بردار، سایز بردار هم یک واحد افزایش پیدا میکنه. :اشتباه:
من دارم روی یه برنامه خیلی ساده کار میکنم اما نمیدونم چرا به یک مشکل عجیب برخورد کردم و هر چی هم سعی کردم نتونستم حلش کنم. در این برنامه من یک کلاس بسیار ساده دارم. فرض کنیم به صورت زیر:
class myclass {
public:
myclass();
myclass(const myclass& orig);
virtual ~myclass();
string Text;
};
(البته این رو بگم که کلاس اولیه ای که تعریف کرده بودم خیلی پیچیده تر از این بود ولی وقتی با مشکل روبرو شدم تصمیم گرفتم که اول مشکلم رو با یک کلاس ساده مثل این حل کنم بعد برم سراغ کلاس اصلی). بگذریم.
حالا میخوام در تابع main یک vector از این کلاس بسازم و ازش استفاده کنم.
vector<myclass> myvect;
myclass tmp;
tmp.Text="TEST";
myvect.push_back(tmp);
cout<<myvect.front().Text<<endl;
اما نکته عجیب اینجاست که در خروجی به جای رشته TEST، فقط یک سطر خالی چاپ میشه.
من برای بررسی صحت عملکرد کامپایلر و سایر موارد اومدم و یک vector از نوع رشته تعریف کردم و بعد اون رو مقداردهی کردم. در این مورد مشکلی وجود نداشت. مشکل وقتی پیش میاد که من یه vector از کلاس می سازم. کسی میدونه علت این مسپله چیه و چه جوری میشه حلش کرد؟
ممنون
راستی این رو هم بگم که اگر در تابع main در سطر ۶ به جای درخواست چاپ محتویات عنصر اول بردار، بخوایم سایز جدید بردار رو چاپ کنیم
cout<<myvect.size()<<endl;
همه چیز درست کار میکنه و با اضافه شدن هر عنصر به بردار، سایز بردار هم یک واحد افزایش پیدا میکنه. :اشتباه: