没有与参数列表匹配的构造函数 "CPerson::CPerson" 实例
时间: 2023-05-23 07:07:23 浏览: 518
A:这个错误通常表示在声明或定义类的构造函数时可能存在问题。如果你想在创建类的实例时传入参数,则需要定义一个构造函数,其参数列表应该与你所传入的参数匹配。如果你没有定义构造函数,则编译器会默认生成一个无参的构造函数。如果你需要使用自己定义的构造函数,需要确保参数列表正确,并且函数体中实现了所需的功能。如果以上操作都已完成,但是仍然遇到这个错误,那么你应该检查你所引用的类的名称和命名空间是否正确。
相关问题
CPerson::CPerson(const CPerson& ob)//拷贝构造函数定义 { ID=ob.ID; Name=new char[strlen(ob.Name)+1]; strcpy(Name,ob.Name); Age=ob.Age; }
这是一个类CPerson的拷贝构造函数的定义。拷贝构造函数用于在创建对象时,使用已存在的对象来初始化新创建的对象。它的参数是一个常量引用,表示要拷贝的对象。下面是函数的具体实现:
```
CPerson::CPerson(const CPerson& ob)
{
ID = ob.ID;
Name = new char[strlen(ob.Name) + 1];
strcpy(Name, ob.Name);
Age = ob.Age;
}
```
在这个函数中,首先将参数对象的ID赋值给新创建的对象的ID。然后,使用动态内存分配来为新对象的Name成员变量分配内存。这里使用了strlen()函数来计算字符串的长度,并且需要加1,以便为字符串末尾的空字符留出空间。接下来,使用strcpy()函数将参数对象的Name成员变量的值复制到新对象的Name成员变量中。最后,将参数对象的Age赋值给新对象的Age成员变量。这样,新对象就完成了从参数对象的拷贝。
CPerson::CPerson(long i,char* p,int a) { ID=i; Name=new char[strlen(p)+1]; strcpy(Name,p); Age=a; }
这是一个 C++ 类 CPerson 的构造函数。函数的参数包括长整型 i、字符指针 p 和整型 a。函数体内部首先将 i 赋值给类的成员变量 ID,然后分配内存空间给类的成员变量 Name,并将 p 中的字符串复制到 Name 中。最后将 a 赋值给类的成员变量 Age。需要注意的是,在使用完 Name 后需要手动释放内存空间,否则容易造成内存泄漏。