我发现将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;
}
我得到的错误是:
[错误]无法调用'(kinda)(int,char [7])'
有人可以告诉我这是为什么吗?
答案 0 :(得分:2)
您无法在已经构造的对象上调用构造函数。 要么使构造函数成为普通的成员函数,要么立即使用所需的构造函数构造对象。
答案 1 :(得分:2)
kinda(int val,char* naam)
只能用于初始化对象。
ob
已初始化kinda ob,ob1;
,因此无法构建两次。
ob(7,a);
//错误
答案 2 :(得分:0)
为了使用构造函数,必须在声明对象的地方使用它。
kinda ob(7,a); // oh make a kinda call it ob and use the constructor
按照您的方式进行操作将其视为函数调用。
kinda ob;
//...
ob(7,a) // call a function called ob with parameters (7, a)
// error. there is no ob function