【发布时间】:2019-01-16 10:25:13
【问题描述】:
我正在关注 Tony Gaddis 的一本名为“从 C++ 开始:从控制结构到对象”的 C++ 书籍。
有一个我收到错误的编程示例。该程序为一个接受两个参数的类创建一个构造函数。这两个参数是指向字符的指针。这是课程的一部分:
class ContactInfo
{
private:
char *name;
char *phone;
public:
ContactInfo(char *n, char *p)
{
name = new char[strlen(n) + 1];
phone = new char[strlen(p) + 1];
strcpy(name, n);
strcpy(phone, p);
}
}
当创建 ContactInfo 类的对象时,程序将这些值传递给构造函数。
ContactInfo entry("Kristen Lee", "555-2021");
这一切对我来说似乎都有意义,但是在将“Kristen Lee”传递给构造函数时出现错误。错误说:
“没有构造函数“ContactInfo::ContactInfo”的实例与参数列表匹配。参数类型为:(const char[12], const char[9])”
我不明白为什么会出现此错误。我唯一能想到的是我们试图将一个值传递给一个保存内存地址的变量。但是,我对编程知之甚少,无法知道是否是这种情况。如果它根本不起作用,我怀疑这会出现在教科书中。也许这是一个视觉工作室问题(我正在使用的 IDE)?我非常感谢我能在这个问题上得到的任何帮助。
【问题讨论】:
-
字符串文字(你的参数)是
const;那些参数ContactInfo(char *n, char *p)不是。因此,有匹配。坦率地说,如果允许任何注定的事情,std::string无论如何都会优先处理大部分事情。
标签: c++ class constructor char arguments