大佬们请问c++为什么类的实参第一个参数会下划线说不匹配

#include<iostream>
using namespace std;
class Complex
{
public:
    Complex(int a, char* b, int c, char* d) 
    {
        number = a;
        name = new char[strlen(b) + 1];
        strcpy(name, b);
        grade = c;
        d = new char(strlen(d) + 1);
        strcpy(arrey, d);
    };
    ~Complex()
    {
        if(name!=NULL)
        delete[]name;
        if (arrey != NULL);
        delete[]arrey;
    }
private:
    int number;
    char* name;
    int grade;
    char* arrey;
};
int main()
{
    Complex f(100,"孙", 3, "一");
}

两个问题,一是析构函数中  if (arrey != NULL);最后的分号去掉

二是main里面f函数参数中的逗号有些事全角字符,重新改一下,特别是3后面的逗号。

如果问题解决,请采纳

Complex这个类可能与系统类同名了,改个名称试试。

我vs2010没有报错,是在不行就定义一个int a=100,然后再

int main()
{

    int a = 100;
    Complex f(a,"孙", 3, "一");
}

另外,析构函数有个问题(下面的代码中我加了注释):

~Complex()
    {
        if(name!=NULL)
            delete[]name;
        if (arrey != NULL); //这句行尾的;去掉
        delete[]arrey;
    }

如果还有问题,尝试把类名改一下,如有帮助,请采纳一下,谢谢。

找到了解决办法,在构造函数里字符前加comst..

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632