基本的に、クラス コンストラクターは既にセットアップされており、以前のいくつかのテストに基づいて正しく動作しています。ここで、メイン パスでクラス ポインター オブジェクトを作成し、それを関数に渡し、その関数内で別の関数を呼び出して、特定の名前で Box クラスのインスタンスを作成し、クラスがスコープ内にある間にそのボックス名を出力する必要があります。
このコードは、いくつかの制限に基づいてのみ設計されているため、本来あるべきほどクリーンでも単純でもありません。いろいろ試してみましたが、どれも私には意味がないようです。アクセス違反が発生し続けます。
void objCreateTmp(char *n)
{
//cout<<"HERE";
Box tmp(n);
cout<<"HERE";
//tmp.name_set(n);
tmp.name_print();
}
void objCreateKeep(Box *p, char *n)
{
objCreateTmp(n);
}
int main()
{
Box *pp = new Box;
objCreateKeep(pp,"Blue Box");
objCreateKeep(pp,"Red Box");
objCreateKeep(pp,"Orange Box");
system("PAUSE");
return(0);
}
編集
さて、Box
クラスの name メンバーへのアクセス、取得、設定に関するすべてを以下に示します。
void Box::pri_setname(char *n)
{
strcpy(name,n);
}
//Set the name of Box()
void Box::name_set(char *n)
{
name = new char[30];
strcpy(name,n);
pri_setname(name);
}
class Box{
//Private data members
private:
char *name;
void pri_setname(char *n);
public:
//Public constructors and deconstructor
Box(char *);
~Box();
//Public function prototypes
void name_set(char *n);
void name_print();
};