ورود

View Full Version : مبتدی: ایجاد حافظه پویا در کلاس



vahid javani
شنبه 22 مهر 1391, 10:51 صبح
درود
اگه امکان داره راهنماییم کنید:
//poynomial.cpp
#include"poynomial.h"
poly1::poly1(int deg)
{
if(deg>0)
degree=deg;
else
{
cout<<"Error";
exit(1);
}
int *coef=new int [degree+1];
}

//poynomial.h
#ifndef POLYNOMIAL_H
#define POLYNOMIAL_H
#include<iostream>
using namespace std;
class poly1
{
public:
poly1(int);
int degree;
int *coef;
};
#endif

ولی وقتی از تابع سازنده خارج میشه حافظه رو پاک میکنه.
از پاسختون متشکرم!

hadi0x7c7
شنبه 22 مهر 1391, 11:21 صبح
مشکل اینه که شما تو سازنده میای دوباره int* coef رو دوباره تعریف میکنی که این باعث میشه coef کلاس مخفی بشه. در وا قع شما داری حافظه رو به یک متغیر محلی نسبت میدی که تبیعتا بعد از پایان تابع نیست میشه !

(البته فکر کنم !)

vahid javani
شنبه 22 مهر 1391, 15:01 عصر
مشکل اینه که شما تو سازنده میای دوباره int* coef رو دوباره تعریف میکنی که این باعث میشه coef کلاس مخفی بشه. در وا قع شما داری حافظه رو به یک متغیر محلی نسبت میدی که تبیعتا بعد از پایان تابع نیست میشه !

(البته فکر کنم !)

ممنون از پاسخت دوست عزیز ولی اگه توی سازنده تعریف کنیم چطوری تو تابع main بهش دسترسی داشته باشم؟؟؟؟

hadi0x7c7
شنبه 22 مهر 1391, 21:35 عصر
ممنون از پاسخت دوست عزیز ولی اگه توی سازنده تعریف کنیم چطوری تو تابع main بهش دسترسی داشته باشم؟؟؟؟توی سازنده تعریف نمیکنی ! در واقع coef ویژگی کلاس هست.
poly1::poly1(int deg)
{
if(deg>0)
degree=deg;
else
{
cout<<"Error";
exit(1);
}
coef = new int [degree+1];
}
توی main هم چون public هست راحت دسترسی داری !.
(شاید !!!!!!)