PDA

View Full Version : حرفه ای: مشکل با const در توابع



NIMA_1981
چهارشنبه 22 آذر 1391, 22:27 عصر
سلام دوستان
من یک تابع دارم به این شکل

const void PrintRes( std::vector< int> tmp) {
std::vector<int>::iterator it;
std::cout << "Result:";

for ( it=tmp.begin() ; it < tmp.end(); it++ ) std::cout << " " << *it;
}

حالا استادم به من میگه بجز خود تابع باید آرگمانی که وارد تابع میشه بازم const بهشه میشه من هر کاری کردم خطا میده
میشه راهنمایی کنید
با تشکر

H_G_G_I
پنج شنبه 23 آذر 1391, 14:39 عصر
اون const رو که پشت void نوشتی بی معنیه ! void رو که const نمی کنن .
تابع const و ترگمان const اینطوریه !

void PrintRes( const std::vector< int> tmp) const
{
//...
}

NIMA_1981
جمعه 24 آذر 1391, 09:52 صبح
اینی که شما نوشیتید خطا میده چون با iterator مشکل داره باید اینجوری باشه


const void PrintRes( std::vector< int> const& tmp) {
std::vector<int>::const_iterator it;
std::cout << "Result:";

for ( it=tmp.begin() ; it < tmp.end(); it++ ) std::cout << " " << *it;
}

omidshaman
جمعه 24 آذر 1391, 12:03 عصر
الان حکمت این const void که گزاشتی چیه قبل فانکشن؟
لازم نیست دیگه همه جا یک const بزاری

H_G_G_I
جمعه 24 آذر 1391, 15:45 عصر
const void PrintRes( std::vector< int> const& tmp) {
std::vector<int>::const_iterator it;
std::cout << "Result:";

for ( it=tmp.begin() ; it < tmp.end(); it++ ) std::cout << " " << *it;
}



الکی که ادم const نمی زاره ! پشت void که دیگه نمی زارن !
اونی که شما نوشتی اشتباهه const رو باید قبل نوع داده ایش بنویسی اونطوری const در نظر گرفته نمی شه .

void PrintRes( const std::vector<int>& tmp);

omidshaman
جمعه 24 آذر 1391, 17:11 عصر
الکی که ادم const نمی زاره ! پشت void که دیگه نمی زارن !
اونی که شما نوشتی اشتباهه const رو باید قبل نوع داده ایش بنویسی اونطوری const در نظر گرفته نمی شه .

void PrintRes( const std::vector<int>& tmp);

نه اینا با هم فرقی ندارن جفتشون 1 معنی رو میدن

void PrintRes( const std::vector<int> & tmp)
void PrintRes( std::vector< int> const & tmp)

H_G_G_I
جمعه 24 آذر 1391, 18:16 عصر
نه اینا با هم فرقی ندارن جفتشون 1 معنی رو میدن

void PrintRes( const std::vector<int> & tmp)
void PrintRes( std::vector< int> const & tmp)

:متفکر:
:متفکر: