样例

我们在一个类中写了一个构造函数,写完之后创建一个对象的时候会发现报错!!!

class Son {
public:
	Son() { 
		age = 0; 
		name[0] = '\0'; 
	}

	Son(int age, char* name) { 
		this->age = age; 
		strcpy_s(this->name, 64, name); 
	}

	~Son(){ 
	
	}

	void print() {
		cout << name << ", " << age << endl; 
	}
	
	friend ostream& operator<<(ostream& out, const Son& other);

private:
	int age;
	char name[64];
};

问题描述:

根据上面的代码,我们在创建一个类的对象的时候,本应该没问题,但是我们却看到了下面的报错↓
在这里插入图片描述
在这里插入图片描述

原因分析:

这里出现这样的原因是因为VS2019更加为严格了,所以才会导致这样的错误。

解决方案:

现在要解决这个错误很简单,只要在构造函数里面加上一个const就可以解决了,如下,或者我们改用string来定义字符串,也可以解决这个问题

Son(int age, const char* name) { 
		this->age = age; 
		strcpy_s(this->name, 64, name); 
	}

在这里插入图片描述

这样就可以继续运行了,喜欢的可以点点赞支持一下哦~

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐