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 数组?

这是我的“书”类的成员数据:

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 函数有疑问时,您应该阅读该手册。strcpy 的原型是:

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

所以当你写:strcpy(title, *t); 它不会编译。你应该写: strcpy(title, t);

一个建议,当你在课堂上写属性名称时,你应该使用 _ before 或 m_ 或 m 像这样:_title,m_title,mTitle。仅仅因为使用一个字母名称的变量很危险。

另一个,在 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 回答