繁体   English   中英

将char数组传递给参数化构造函数失败

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM