我发现将 char 数组传递给函数时出现问题。这基本上是我看到问题的参数化构造函数。问题在于将 char 数组传递给参数化构造函数。
这是代码:
#include <iostream>
#include <cstring>
using namespace std;
class kinda
{
int a;
char name[10];
public:
kinda()
{
cout<<"in default constr"<<endl;
a=0;
name[0]='\0';
}
~kinda()
{
cout<<"in default destr"<<endl;
}
kinda(int val,char* naam)
{
cout<<"in param constr"<<endl;
a=val;
strcpy(name,naam);
}
kinda(kinda &obj)
{
cout<<"in copy constr"<<endl;
a=obj.a;
strcpy(name,obj.name);
}
void display()
{
cout<<"obj details"<<endl;
cout<<"a="<<a<<endl;
cout<<"name="<<name<<endl;
}
};
int main()
{
kinda ob,ob1;
char a[]="prashu";
ob.display();
ob(7,a);
ob.display();
ob1.display();
ob1=ob;
ob1.display();
return 0;
}
我得到的错误是这样的:
[Error] no match for call to '(kinda) (int, char [7])'
谁能告诉我这是为什么?
最佳答案
您不能在已经构造的对象上调用构造函数。 要么使构造函数成为普通成员函数,要么立即使用所需的构造函数构造对象。
关于c++ - 将 char 数组传递给参数化构造函数失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29496506/