PDA

View Full Version : آیا میشود یک شی برای کلاس بصورت عمومی تعریف کرد؟



boysilent
پنج شنبه 25 آبان 1391, 18:30 عصر
سلام دوستان من میخوام داخل کلاس هام یک کلاس دیگرو فراخوانی کنم //میخواسم ببینم چطوری میشه اینکار رو یعنی تعریف شی از کلاس رو بصورت عمومی تعریف کزد

TEST OBJ;

Khashayargh
پنج شنبه 25 آبان 1391, 18:44 عصر
شما می تونی از کلاس دوست یا خاصیت وراثت و یا کپی کردن object استفاده کنی یه سرچ تو گوگل بزنی طریقه ی prototype و پیاده سازیشو یاد می گیری

Ananas
جمعه 26 آبان 1391, 01:15 صبح
سلام. اگه منظورتون رو درست متوجه شده باشم ، برای تعریف نمونه ای از یک کلاس به عنوان متغیر داخل کلاس دیگه، می تونید از اشاره گر استفاده کنید و موقع ساختن کلاس اصلی، این اشاره گر به کلاس رو با new بسازید.

boysilent
جمعه 26 آبان 1391, 11:01 صبح
ببینید دوستااان من میخوام هربار که از این شی استفاده میکنم مفادیر داخل حافظه پاک نشه //
من میخوام داخل کلاس هربار یه شی نسازم؟؟این کار چطوری امکان پذیره؟یه راهنمایی

void main(){
classname x;
x.show();
}

//
void classname::print(){
x.load()//
}

boysilent
جمعه 26 آبان 1391, 16:17 عصر
اینم کدمه


#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
class reshte{
public:
int x;
//int choice;
char name[30];
char text[50];
void ezafe();
void print();
void show();
//reshte();
//~reshte();
int showtwo();
}list[100];

void reshte::ezafe(){
clrscr();
x=1;
cout<<"Insert name reshte :";
cin>>list[x].name;
cout<<"\n Insert reshte :";
cin>>list[x].text;
//cout<<"\n please see ------------------- \n";
x++;
reshte obj;
obj.showtwo();


}
void reshte::print()
{
clrscr();
cout<<"name reshte | mohtavaie reshte | \n";
int i;
for(i=1;i<=x;i++)
cout<<list[i].name<<" |"<<list[i].text<<"\n";
cout<<"End";

}

//////////////show/////////
void reshte::show(){
clrscr();
int choice;
cout<<"--------Menu-----------\n";
cout<<"1.Add string.\n";
cout<<"2.Show all. \n";
cout<<"3.Search string. \n";
cout<<"4.Exit.\n";
cout<<"-----------------------\n";
cout<<"Please insert number 1 to 5 :";

cin>>choice;
reshte obj;
switch(choice)
{

case 1:
obj.ezafe();
break;
case 2:
obj.print();
break;
}
}
////////////////menu2//////////////////
int reshte::showtwo(){
int choice;
cout<<"1.page one.\n";
cout<<"2.Exit.";
cin>>choice;
reshte obj;
switch(choice){

case 1:
obj.show();
break;
case 2:
return 0;
break;


}
}

int main()
{
reshte obj;
obj.show();


getch();
}

Ananas
جمعه 26 آبان 1391, 19:11 عصر
چی؟؟؟؟؟؟؟؟ کدی که نوشتی خیلی عجیبه!!! اصلا چرا obj از نوع reshte رو تو هر تابع تعریف کردی؟ که چی بشه؟ اصلا چرا کلاس رشته داری تعریف می کنی میای از نوع خودش ، توش یه نمونه می سازی؟ فکر می کنم روشت از ریشه اشتباه باشه. اگه می خوای از نوع خود کلاس، یکی توش تعریف کنی باید از اشاره گر به اون کلاس استفاده کنی که اونم باز جاهای خاص کاربرد داره که فکر نمیکنم اینجا لازم باشه. احتمالا شما می خوای از اشاره گر به خود کلاس استفاده کنی که باید با عبارت this این کار رو انجام بدی. یه توضیحی بده تا ادامه بدیم.

boysilent
جمعه 26 آبان 1391, 22:57 عصر
چی؟؟؟؟؟؟؟؟ کدی که نوشتی خیلی عجیبه!!! اصلا چرا obj از نوع reshte رو تو هر تابع تعریف کردی؟ که چی بشه؟ اصلا چرا کلاس رشته داری تعریف می کنی میای از نوع خودش ، توش یه نمونه می سازی؟ فکر می کنم روشت از ریشه اشتباه باشه. اگه می خوای از نوع خود کلاس، یکی توش تعریف کنی باید از اشاره گر به اون کلاس استفاده کنی که اونم باز جاهای خاص کاربرد داره که فکر نمیکنم اینجا لازم باشه. احتمالا شما می خوای از اشاره گر به خود کلاس استفاده کنی که باید با عبارت this این کار رو انجام بدی. یه توضیحی بده تا ادامه بدیم.
میدونی دوست عزیز من فقط میخوام که از شی obj توی توابع کلاسها استفاده کنم و بدون تعریف داخل کلاس.


آقا مشکلم حل شد،متشکر ممنون