PDA

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



NIMA_1981
جمعه 26 اسفند 1390, 19:00 عصر
دوستان مین یک کلاس دارم مه می خوام مقدار متغییر را برابر با تابعی کنم که بصورت define در اول برنامه مقدار دهی شده وقتی داخل کلاس این کارو مینم خطا میده اما داخل تابع main که استفاده میکنم درست کار میکنه

#include <iostream>
#define mm MaxData<int>()
template <class T> T MaxData(){
return ~(1<<((sizeof(T)*8)-1));
}
using namespace std;
class dd{
public :
int bb;
bb=mm;
};
int main(){
double aa;
aa=MaxData<int>();
for (int i=0;i<=aa;i++)
std::cout<<i<<endl;

}

Arcsinos
جمعه 26 اسفند 1390, 20:29 عصر
سلام برادرِ بسیجی : تا اونجایی که من خبر دارم یا باید متغیرت static باشه یا اینکه توی تابع سازنده مقدار دهیش کنی، خوشحال میشم اگه دوستان راه های دیگه ای پیشنهاد بدن .

NIMA_1981
جمعه 26 اسفند 1390, 23:44 عصر
میشه مثال بزنی من با استاتیک انجام دادم اما بازم نشد

Arcsinos
شنبه 27 اسفند 1390, 00:50 صبح
نیما جان این برنامه اجرا میشه و خروجی رو هم چاپ میکنه . برنامه ی تو چند تا مشکل داشت بزرگترینشم این بود که تو قسمت پابلیک کلاست برداشتی یه دستور assign نوشتی، بعد return تابع اصلی رو هم ننوشتی بعد یه مشکل برنامه ام این بود که aa مقدارش خیلی بزرگ میشه و تو برداشتی یه حلقه نوشتی تا زمانی که i از aa کوچیکتر بود i رو چاپ کن .


#include <iostream>

#define mm MaxData<int>()

using namespace std;

template <class T>
T MaxData()
{
return ~(1<<((sizeof(T)*8)-1));
}

class dd
{

public:
static int bb;
};

int dd::bb = mm;

int main()
{
int aa;
aa = MaxData<int>();
cout << "bb="<<dd::bb<<"\naa="<<aa;//a very big number

return 0;
}

NIMA_1981
شنبه 27 اسفند 1390, 09:58 صبح
مرسی دوست من مشکل من اینه که داخل خود کلاس نیمتونیم از این استفاده کنیم - مثلا از کتابخانه limit برای ساهت عدد infinity وقتی میخوام استفاده کنم بازم به همین مشکل را دارم