クラスを作成するコードを作成しようとしましたが、そのオブジェクトはヒープ上にしか作成できませんが、 スタックは作成できません。しかし、コンパイル中にいくつかのリンクエラーが発生しました。エラースタック上にオブジェクトを作成することはできませんが、ヒープ上にのみ作成できるクラスを作成する際には、
ccUfbaaa.o(.text+0x24f) In function `main': [Linker error] undefined reference to `Rect::~Rect()'
ccUfbaaa.o(.text$_ZN4Rect8instanceEv[Rect::instance()]+0x60) In function `ZN4Rect9area_rectEv': [Linker error] undefined reference to `Rect::Rect()'
ccUfbaaa.o(.text$_ZN4Rect8instanceEv[Rect::instance()]+0x60) ld returned 1 exit status .
私はオブジェクトだけヒープ上にcratedできるようになりますデストラクタのプライベートを作ることができます知っている:
# include<iostream>
# include<stdio.h>
# include<conio.h>
using namespace std;
class Rect
{
int length;
int breadth;
Rect();
public :
Rect & operator = (const Rect&);
Rect(const Rect& abc)
{
cout<<"in copy const"<<"\n";
}
~Rect();
int area_rect()
{
return length*breadth;
}
void set_value(int a,int b);
static Rect* instance()
{
Rect* ptr=NULL;
ptr=new Rect ;
return ptr;
}
};
void Rect::set_value(int a,int b)
{
length=a;
breadth=b;
}
int main()
{
Rect* a= Rect::instance();
a->set_value(10,3);
cout << "area realted to object a : " << a->area_rect() <<"\n";
Rect* b=a;
b->set_value(10,4);
cout << "area realted to object a : " << a->area_rect() <<"\n";
cout << "area realted to object b : " << b->area_rect() <<"\n";
delete b;
getch();
return 0;
}
は、私は次のエラーを得ました。しかし、その場合、どのように私は作成されたオブジェクトを削除できますか?そして、上記のエラーをどうやって修正することができますか?
〜Rect()の実装がなく、デフォルトコンストラクタがありません。 –