PDA

View Full Version : تفاوت بین این دو نوع تعریف از اشاره گرها



myclick
یک شنبه 10 دی 1391, 17:04 عصر
سلام جه تفاوتی بین این مدل تعریف myname_of_class* myvariable
و این نوع تعریف myname_of_class *myvariable

و اینکه چه شکلی می تونم داخله کلاس a یک اشاره گر تعریف کنم از جنس کلاس b. به نظرم باید با استفاده از تعریف کلاس b به عنوان دوست a و البته این اتفاق نیفتاد و ارور c2512 بم داد.

lexical_error
یک شنبه 10 دی 1391, 18:45 عصر
سلام

بین این سه دستور هیچ تفاوتی وجود ندارد

myname_of_class* myvariable
myname_of_class *myvariable
myname_of_class * myvariable

برای تعریف اشاره گر از نوع کلاس ، نیاری به تعریف کلاس دوست نیست ، فقط باید داخل یکی از توابع کلاسی که دارای اشاره گر هست ، اشاره گر رو روی حافظه آزاد تعریف کنید.(معمولا تو سازنده این کار انجام میشه)

myclick
چهارشنبه 13 دی 1391, 00:44 صبح
سلام یکی از مشکلاتی که الان هست اینکه من نمی تونم به هیچ وجه شی تعریف کنم از کلاسام مگر اینکه از نوعه اشاره گر هم باشن دلیل چیه اگر مثلا این طور بنویسم این ارور رو بم میده.
temp=new node;
این ارور رو به من می ده
IntelliSense: identifier "temp" is undefined
و اگر این طور بنویسم مشکلی نداره چرا اینطوره؟؟
node* temp=new node;

the king
چهارشنبه 13 دی 1391, 07:09 صبح
این بخش ;new node= مربوط به مقدار دهی ئه، اما قبل از مقدار دهی اول باید تکلیف temp رو برای کامپایلر روشن کنید، کامپایلر از کجا بدونه
که temp چیه، کجا تعریف شده و کی باید حافظه اش ایجاد و رها بشه. اول باید temp تعریف بشه و نوع داده ای اش مشخص بشه.
برای همین اون node* temp باید قبلش نوشته شده باشه. البته لازم نیست که تعریف و مقدار دهی بهم بچسبند. اینطوری هم میشه :

node* temp;
temp = new node;