2

現在取り組んでいるプログラミングの課題について簡単な質問がありました。現在、動的に割り当てられた配列に取り組んでいます。

コンストラクターで「Book」オブジェクトをデフォルト値/名前に設定できました(strcpyを使用):

Book::Book() 
{
 strcpy(title, " ");
 strcpy(author, " ");
 price = 0.00;
}

ただし、割り当てで指定された別の関数 (Set 関数) では、strcpy を使用して次の同じことを行うことができませんでした。

void Book::Set(const char* t, const char* a, Genre g, double p)
{
    strcpy(title, *t);
    strcpy(author, *a);
    type = g;
    price = p;
}

私の質問は、最初の「Const char * t」パラメーターからの情報を取得し、それを title[31] という名前のプライベート データ char 配列に設定するにはどうすればよいかということです。

これは私の「Book」クラスのメンバーデータです。

private:
  char title[31];   // may assume title is 30 characters or less
  char author[21];  // may assume author name is 20 characters or 
  Genre type;       // enum Genre
  double price;

何か明確にする必要がある場合はお知らせください。

再度、感謝します!

4

2 に答える 2

3

std 関数について質問がある場合は、man を読む必要があります。strcpy のプロトタイプは次のとおりです。

char *strcpy(char *dest, const char *src);

したがって、次のように記述しますstrcpy(title, *t)。コンパイルされません。あなたは書くべきです: strcpy(title, t);

クラスでattribの名前を書くとき、_title、m_title、mTitleのように_ beforeまたはm_またはmを使用する必要があります。1文字の名前の変数を持つのは危険だからです。

別の方法として、C++ ではstd::string、文字のチェーンを操作する方が簡単なため、使用する必要があります。

于 2013-10-25T07:08:40.667 に答える
1

それ以外の

strcpy(title, *t);
strcpy(author, *a);

書きます

strcpy(title, t);
strcpy(author, a);

これは、strcpyがポインターを予期してい*tて、文字列へのポインターではないためです。

ここを見てください http://www.cplusplus.com/reference/cstring/strcpy/

于 2013-10-25T07:09:03.193 に答える