[英]Passing char arrays to a parameterized constructor is failing
我在将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])'的调用
有人可以告诉我为什么吗?
您不能在已构造的对象上调用构造函数。 将构造函数设为普通成员函数,或者立即使用所需的构造函数构造对象。
kinda(int val,char* naam)
仅可用于初始化对象。
ob
已初始化为kinda ob,ob1;
因此它不能被构造两次。
ob(7,a);
//错误
为了使用构造函数,必须在声明对象的地方使用它。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.