1

基本的に、クラス コンストラクターは既にセットアップされており、以前のいくつかのテストに基づいて正しく動作しています。ここで、メイン パスでクラス ポインター オブジェクトを作成し、それを関数に渡し、その関数内で別の関数を呼び出して、特定の名前で 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();

};
4

0 に答える 0