PDA

View Full Version : کمک در مورد مقداردهی اولیه در کلاس



blackway
شنبه 25 اردیبهشت 1389, 01:44 صبح
با سلام
من یک سوال در مورد کلاس در زبان ++C دارم
که وقتی کانستراکتور ما دارای آرگومان ورودی باشه و از آن object به صورت آرایه ای ساخت چه جوری میشه آن را مقداردهی اولیه کرد.
class st { st(int a);}
main(){
st t[10] ; } این خطی که در main هست رو ارور میده چون مقداردهی نشده ...
لطفا بگویید این خط را چگونه میتوان مقداردهی اولیه کرد.
با تشکر

clover
شنبه 25 اردیبهشت 1389, 12:50 عصر
class st
{
public:
st(int a)
{
id = a;
}
int getId()
{
return id;
}
private:
int id;
};
int main()
{
st t[5] = {9, 4, 6, 2, 7};

return 0;
}

موفق باشید

Salar Ashgi
شنبه 25 اردیبهشت 1389, 17:39 عصر
معمولا تو این حالت درستش اینه که یک تابع سازنده بدون ورودی به کلاس باید اضافه بشه :



#include <iostream>
#include <conio>
class Num{
public:
Num(int);
Num();
void print();
private:
int x;
};
//===============
Num::Num(int a){
x=a;}
//===============
Num::Num(){
x=0;}
//===============
void Num::print(){
cout<<x<<endl;}
//===============
int main(){
Num ar[4];
for(int i=0;i<4;i++)
ar[i] = Num(i+1);
//=================
for(int i=0;i<4;i++)
ar[i].print();
getch();
}


موفق باشید .

blackway
شنبه 25 اردیبهشت 1389, 18:49 عصر
با تشکر از راهنمایی شما دوست عزیز ولی این سوال پیش می آید که اگر کدی



enum type{A,B,C};
class st{

st(int a,char* c,type d);
}
main(){
st f[5];
}


شبیه این باشد چگونه مقداردهی اولیه کنم؟
با تشکر از توجه شما

clover
یک شنبه 26 اردیبهشت 1389, 00:10 صبح
شبیه این باشد چگونه مقداردهی اولیه کنم؟
متاسفانه از این مورد و موارد مشابه اطلاعی ندارم اما برای من هم جالب هست که بدونم در مورد چه کاری باید انجام داد و آیا این مربوط به ضعف زبان هست یا نحوه استفاده ی غیر صحیح از امکانات زبان ؟

tdkhakpur
یک شنبه 26 اردیبهشت 1389, 00:31 صبح
به شکل زیر میتوانید این کار رو انجام بدید


class st{
public :
st(int a, char* c, float d){
cout<<a<<"\n";
cout<<c<<"\n";
cout<<d<<"\n";
}
};
int main()
{
st f[5] = { st(1, "turbo debuger1", 0.3f),
st(2, "turbo debuger2", 1.3f),
st(3, "turbo debuger3", 2.3f),
st(4, "turbo debuger4", 3.3f),
st(5, "turbo debuger5", 4.3f)
};
}