【发布时间】:2015-06-12 08:09:48
【问题描述】:
我发现将 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(7,a);-->kinda ob(7,a); -
C != C++,这显然是 C++。应该删除 C 标签。
标签: c++ arrays oop constructor