我有一个关于我正在进行的编程任务的快速问题。 我们目前正在研究动态分配阵列。
我能够在构造函数中将我的“Book”对象设置为默认值/ name(使用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]的私有数据字符数组?
这是我的“Book”类btw的成员数据:
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;
如果我需要澄清任何事情,请告诉我,
再次感谢!
答案 0 :(得分:3)
当你对std函数有疑问时,你应该读一下这个人。 strcpy的原型是:
char *strcpy(char *dest, const char *src);
所以当你写:strcpy(title, *t)
;它不会编译。你应该写:
strcpy(title, t);
一个建议,当你在课堂上写attrib的名字时,你应该使用_之前或m_或m这样:_title,m_title,mTitle。只是因为使用一个字母名称来变量是危险的。
另外,在c ++中你应该使用std::string
因为它更容易操作caracters链。
答案 1 :(得分:1)
而不是
strcpy(title, *t);
strcpy(author, *a);
写
strcpy(title, t);
strcpy(author, a);
这是因为strcpy
期待指针,*t
不是指向字符串的指针。