PDA

View Full Version : سوال: آرایه ای از object ها در++c



Cplasplas87
یک شنبه 03 آبان 1388, 11:57 صبح
:لبخند:سلام دوستان. سوال من در مورد تعریف و مقداردهی اولیه به آرایه ای از object ها به عنوان عضوی از یک کلاس است

class a
{
//members
};



class b
{
b();
a array_name[10][10][10];
};


b::b()
{
//؟؟؟
}

حالا این آرایه از اشیا کلاس a را چگونه در تابع سازنده b مقدار دهی اولیه کنم؟:متفکر:

tdkhakpur
یک شنبه 03 آبان 1388, 12:05 عصر
مثال



class a
{
public:
int var1;
int var2;
//members
};


class b
{
b();
a array_name[10][10][10];
};
b::b()
{
for( int i=0; i<10;i++ )
for( int j=0; j<10;j++ )
for( int k=0; k<10;k++ ){
array_name[i][j][k].var1 = 1;
array_name[i][j][k].var2 = 1;
}
}

Cplasplas87
چهارشنبه 06 آبان 1388, 23:59 عصر
مثال



class a
{
public:
int var1;
int var2;
//members
};


class b
{
b();
a array_name[10][10][10];
};
b::b()
{
for( int i=0; i<10;i++ )
for( int j=0; j<10;j++ )
for( int k=0; k<10;k++ ){
array_name[i][j][k].var1 = 1;
array_name[i][j][k].var2 = 1;
}
}
11111111111111111

Cplasplas87
پنج شنبه 07 آبان 1388, 00:02 صبح
من روش شما را اجرا کردم مفید بود متشکرم:چشمک: ولی ابعاد آرایه array_name را فقط می توان تا[20][20][20] بالا برد و اگر مثلا بشود [30][30][30] error زمان اجرا می دهد (در زمان کامپایل و لینک هیچ error ی نمی دهد.:متعجب:) واز آنجا که من باید ابعاد این آرایه را خیلی بالا ببرم لطفا مرا راهنمایی کنید .

tdkhakpur
پنج شنبه 07 آبان 1388, 13:59 عصر
فكر نكنم به اين سكل باشه.
ولي كد خودتان را ارسال كنيم تا يك نظري بيافكنيم.

Cplasplas87
پنج شنبه 07 آبان 1388, 21:38 عصر
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <string.h>
#include <conio.h>

class sphere
{
public:
sphere();

int i;
int j;
int k;
double x;
double y;
double z;
double r;

};
//**
sphere::sphere()
{
x = 0;
y = 0;
z = 0;

r = 0;

i=0;
j=0;
k=0;

}

//////////////////////////////////
class media
{
public:
media();
sphere total_matrix[30][30][30];

};
//**
media::media()
{
int i,ii,iii;

for(i=0;i<30;i++)
{
for(ii=0;ii<30;ii++)
{
for(iii=0;iii<30;iii++)
{
total_matrix[i][ii][iii].x=0;
total_matrix[i][ii][iii].y=0;
total_matrix[i][ii][iii].z=0;
total_matrix[i][ii][iii].r=0;
total_matrix[i][ii][iii].i=0;
total_matrix[i][ii][iii].j=0;
total_matrix[i][ii][iii].k=0;
}
}
}

}
////////////////////////////////////////////
int main()
{
sphere s;
media m;

return 0;
}


:لبخند:

Cplasplas87
پنج شنبه 07 آبان 1388, 21:46 عصر
من هر چی کردم کد بهم نریزد باز هم به هم ریخت. نوشته فارسی رو هم در پاسخ فوری نوشتم شاید به هم نریزد ولی به هم ریخت.بگذریم .برنامه من در قالب WIN32 CONSOLE APPLICATION است گفتم شاید لازم باشد. ممنونم از توجه شما

tdkhakpur
پنج شنبه 07 آبان 1388, 22:49 عصر
بهترين راه اين است كه شما بصورت پويا حافظه مربوط به كلاس را مي گرفتيد ولي براي اينكه الگوريتم كار شما مبهم نشود داخل كامپايلر به شكل زير مقدار stack را تغيير بديد.